为什么Scala从对象的主要方法开始而不是类的静态主方法?

时间:2014-11-08 06:41:48

标签: java scala oop object

在Java中,程序从类的静态main方法开始。但是在Scala中,它从对象的主要方法开始。

有谁知道这样设计的合理性?

Scala还提供了一个名为App的特征,如果一个对象扩展了这个特征,它可以替换main方法。有没有人有关于哪一个(Appmain)是首选方式的想法?

谢谢!

4 个答案:

答案 0 :(得分:7)

Scala具有单例对象而不是java静态成员。所以对象的主要方法是java静态主方法的类比。

答案 1 :(得分:4)

我总是在我的主类中扩展App,并且知道没有理由为什么有人想要编写一个显式的main方法 - 除了可能与其他一些对这些事情过于挑剔的代码兼容。每当我在Scala中看到一个显式的main方法时,我想知道代码是否已经过时(早于App特征)或者作者是Scala的新手。

但是这个问题似乎主要是为什么Scala的设计者省略了静态方法。您可能会发现this question about how static members are not object-oriented有帮助。

答案 2 :(得分:3)

Scala没有静态方法。如果Scala需要从静态main方法启动程序,那么你永远不能运行Scala程序,因为你无法编写静态main方法。

答案 3 :(得分:1)

使用static就像使用全局函数一样。 Scala是纯粹的面向对象语言,没有静态。但实际上Scala编译器会为JVM生成静态main。 建议使用“App”特性进行简短的学习计划。