【问题标题】:Why do i need to create a class in Java program? [closed]为什么我需要在 Java 程序中创建一个类? [关闭]
【发布时间】:2016-02-16 20:42:51
【问题描述】:

在我 3 年的职业生涯中,我一直在使用数据库、数据等。直到去年我才开始使用 Python 进行一些数据分析。现在我对所有大数据生态系统都产生了兴趣,而 Python 让我走得够远了。

但是,最近我选择学习 Scala 作为我的第二编程语言。看来通常我的程序需要有一个类、一个方法,然后才需要构建它。老实说,这一切都非常令人困惑:)

所以我继续阅读,似乎 Scala 来自 JVM 环境,我开始阅读 Java,结果发现在 Java 中你不能只创建一个由单个命令组成的程序。您需要创建一个类、一个方法等。我知道这可能是因为它遵循 OOP 的原则之一,但是谁能指导我到源代码,这将解释为什么我们需要创建java 中的类和方法 - 而不是仅列出命令?

【问题讨论】:

  • 你已经给出了答案。在 OOP 中,一等公民是对象。有些语言在函数已经是对象的地方更进一步。与 java 相比,Python 没有遵循如此明确的(基本的;))原则
  • @CAFEBABE 是的,我听了一个关于函数式编程的讲座,它说在 OOP 中,名词是一等公民(类/对象),动词(方法)不能在没有 сonvoy 的情况下单独使用 :)跨度>
  • 实际上java中的设计缺陷是原始数据类型和运算符'+'破坏了这些原则。但是,现在我想知道:您的问题是什么。
  • 这将给出部分解释,或者至少指出main 的灵感来源。看看这里en.wikipedia.org/wiki/Entry_point。

标签: java python scala


【解决方案1】:

所以我继续阅读,似乎 Scala 来自 JVM 环境,然后我开始阅读 Java,结果发现在 Java 中你不能只创建一个由单个命令组成的程序。你需要创建一个类,一个方法等,我理解可能是因为它遵循了OOP的原则之一

首先,让我简要解释一下为什么 Python 不需要您创建类或类似的东西来运行它。

Python 被设计为一种解释性语言(或者您可以将其称为脚本)。您编写的指令是由命令解释器处理的一系列操作系统命令。那么什么是命令解释器呢?

命令解释器是操作系统的一部分,它执行您输入的命令。在某些操作系统中,它被称为shell。

另一方面,

Java 是一种设计为编译语言,需要由语言编译器编译。语言编译器将您的源代码转换为机器语言,以便您的处理器可以处理它。

在我看来,这与 Java 中的 OOP 无关。正是它们的本质有所不同——编译与解释。


如果你只是想知道为什么 Java 代码需要一个类,那么之前在 SO 中已经问过这个问题:

Why do C# and Java require everything to be in a class?

【讨论】:

  • 在我看来,Interpreted vs Compiled 似乎仍然不是一个有效的答案。 JVM 字节码只是一种最终会被解释的数据结构,就像 Python 源代码(或解析的 AST)是一种最终会被解释的数据结构一样。但是,这是我的看法。
  • 如果我们在入口点 en.wikipedia.org/wiki/Entry_point 上添加来自@pedrofurla 的链接 - 这将有助于接受事物的现状和原因:)
【解决方案2】:

Scala 就是因为这个而诞生的。它混合了函数式和 OOP 语言特性,因此您可以自己创建方法,而无需创建包含它们的类。

Java 没有这个特性,方法不能在类之外创建。 Java 是非常面向对象的,一切(除了原语)都扩展了对象。

有人说,是这样的,因为java是垃圾回收的。在对象中包含函数可以更轻松地释放空间。

这真的取决于你,如果你觉得这很好或不好。在我看来,最好尽可能远离函数式编程。让我们不要回到 C 时代。

【讨论】:

  • 实际上 Scala 比 Java 更面向对象。而且你不能在 Scala 中真正拥有顶级方法。
【解决方案3】:

Java 是一种面向对象 (OO) 的语言。类是对象,是该语言的基本构建块之一。在类中,您有方法,其中包含您所说的“命令”。

我建议您参考有关该主题的文献 - 有大量书籍概述了 OO 原则以及不同类型语言(OO、功能、程序等)之间的差异。

总而言之,维基百科可能是一个很好的起点 - 请在此处查看主要范例方法列表:

https://en.wikipedia.org/wiki/Comparison_of_programming_paradigms#Main_paradigm_approaches

P.S.:由于我不确定您的问题到底是什么,我必须补充一点,当然,Python 也是一种 OO 语言。无需先创建类即可运行 Python 代码,这是一种设计选择。

【讨论】:

    猜你喜欢
    • 2017-04-03
    • 1970-01-01
    • 2010-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2021-04-26
    • 2013-05-14
    相关资源
    最近更新 更多