哪个类继承自Java main方法?

时间:2011-10-17 04:54:16

标签: java

在java main方法中,如果更改访问修饰符,我们得到了一个运行时异常。所以,我的疑问是,哪个类来自Java main方法??main()方法遵循的规则是什么?。如果不是inherted,当我调用main方法时,jvm内部完成了什么?。

5 个答案:

答案 0 :(得分:3)

根据Java规范(第三版)http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.1.4。 方法main必须声明为public,static和void。它必须接受一个字符串数组的参数。此方法可以声明为

public static void main(String[] args)

public static void main(String... args)

所以:

  • 公开。可访问的访问修改器方法
  • 静态的。指定没有必要的修饰符创建一个新对象来调用该方法。

答案 1 :(得分:0)

  1. 方法应该静态,因为我们需要在没有的情况下访问它 创建一个实例。
  2. 方法应该公开,以便它是 在课堂范围之外可见。
  3. 因此,如果更改访问修饰符,JVM将无法访问方法。它不是遗传的。

答案 2 :(得分:0)

Public - JVM调用main方法来运行项目范围之外的方法,因此访问说明符必须是公共的,以允许从应用程序外的任何地方进行调用或指示方法可以是由任何对象调用。

static - 当JVM调用main方法时,没有对象被调用,因此它必须有静态方法来允许从类调用。

答案 3 :(得分:0)

将main方法的修饰符更改为private是完全合法的语法。对于NAMED main方法,JVM不需要任何类型的访问修饰符。但是它需要执行EXECUTED的类具有公共主要方法。

我不确定你的确切目的是什么,但这里有两个建议。

1)您是否尝试通过将主方法私有化来减少对“静态”调用的依赖?如果是这样,请删除main all,并让您的类实现“runnable”对象,而不是支持main方法。这样,其他类可以运行您的类而不依赖于它的main方法。

2)你是否试图将main方法转换为另一个内部使用的类的静态方法?如果是这样,您可能想重新考虑为什么要将这样的方法命名为main(更重要的是,如果您知道它的主要是私有的,那么为什么仍然尝试将此类作为java应用程序入口点运行?)...

答案 4 :(得分:0)

根据java文档,main()方法签名必须是这样的,为什么我这么说:

public static void main(String[] args){
//your stuffs
}
  1. 这里使用了公共访问说明符,因为JVM通过调用main()方法开始执行java程序。所以JVM只是一个程序。如果main()不是public,那么JVM就不能调用这个方法。所以它必须公开
  2. 因为在JVM调用main()期间没有对象存在,因为执行从main()方法onlt.So开始没有对象我们只能通过使它静态调用方法。所以JVM调用main(),main ()必须是静态的,所以它是静态的。
  3. 要在运行时提供程序内的任何数据,会给出一个字符串aray,因为String可以很容易地转换为任何其他数据类型。