为什么main方法只写在object而不是class?

时间:2018-05-28 15:12:46

标签: scala

如何在scala中调用main方法?为什么在仅在对象中而不是在类中编写main方法时调用main方法?

3 个答案:

答案 0 :(得分:4)

因为the specification这样说:

  

程序是顶级对象,其成员方法main为(Array[String])Unit类型。程序可以从命令shell执行。程序的命令参数作为Array[String]类型的参数传递给main方法。

     

程序的主要方法可以直接在对象中定义,也可以继承。

它只涉及顶级对象,而不是类。如果在类中定义main方法,那么它将只是您可以在此类的实例上调用的普通方法。除非您定义从此类/特征继承main的顶级对象,否则此方法main将不会被视为应用程序的入口点。

答案 1 :(得分:2)

主要方法必须是静态方法。在Scala中创建一个静态方法,将其放在一个对象中。类中的方法不是静态的。

在scala语言中,他们决定将仅包含实例行为和状态的类与包含静态行为和状态的对象分开。这不同于java,其中类包含实例和静态成员,其中使用static关键字使某些内容成为静态。

答案 2 :(得分:0)

这是因为在scala中定义方法static的唯一方法是对象类。并且也有必要仅创建一个主类实例,而不是多个实例。这就是为什么它是对象类