为什么Java中的main方法总是需要公开?

why main method in Java need to be public always?

本问题已经有最佳答案,请猛点这里访问。

为什么Java中的主要方法总是需要公开?如果我们声明类的主方法是默认的,它将成功地执行它,但是如果我们声明主方法是默认的,那么JVM将抛出错误。为什么?在这里

1
2
3
4
5
class DefaultTest {
    public static void main(String[] args) {
        System.out.println("output.........");
    }
}

运行成功,但

1
2
3
4
5
class DefaultTest {
    static void main(String[] args) {
        System.out.println("output.........");
    }
}

这不会。我的意思是,如果类本身不是公共的,那么JVM仍然可以访问主方法,这意味着不需要将主方法公开。但是,如果我们不将其声明为公共的,它将抛出一个错误。


所以JVM可以运行该方法而不需要安装该类物体因此,JVM可以在没有任何问题的情况下自由进入。


It is specified by the Java language specification,see http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html chapter 12.1.4.Invoke test.Main:

The method main must be declared public, static, and void.

It is also required by the JVM specification,see the answer from@a4l.


从JVMS

BLCK1/

所以这是一种特殊的方式,JVM销售商必须尊重它!


我认为这只是爪哇语言中的一条规则。技术上,我看不到另一个原因这不是公开的JVM仍然能找到它,叫它。


主要方法是严格遵循它的语法;其他的JVM无法定位它,而您的程序不会运行。

他们是公开的,因为他们必须能够进入JVM,以便开始执行该方案。如果该方案不是公开的,那么该方案的成员只能进入该方案,而JVM不能进入该方案。

主要是在任何一类中执行的第一种方法。它们是静态的,因为它们必须能够在没有客观诉讼的情况下执行。


因为主要方法是网关,从你的项目可以进入的地方。如果你让这个主要的网关在您的应用中被私人使用,那么功能性的可获得性是不可能的。


在包内或包外的任何人都可以进入公共类别和方法。因此,自从JVM IYSELF在不同的包装中负荷超过了缺陷或你的包装,你就需要用公共存取修改


Java specifies several access modifiders e.g.private,protected and public.在爪哇公开宣布的任何方法或变量都可以从这一类的外部进入。因为主要方法是公开的爪哇,JVM可以容易地接入和执行它。


如果没有修改(E.G.,EDOCX1&0),则只使用类别,而包装可以运行该方法。这意味着外面的世界无法运用主要的方法。这就是为什么你需要用public来确定方法。