为什么包含main方法的类没有实例化,在Java中仍然可以?

Pav*_*ath 7 java oop methods program-entry-point

我开始编写我的第一个Java程序.

class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,程序运行正常.但根据我的OOP知识,a class只是一个抽象的概念,并没有生出来,直到你创造了一个同类的对象.然后,通过该对象,我们调用类中的方法/函数.

但是在这个特定的例子中,似乎main即使没有创建对象也会调用该方法class HelloWorldApp

对象是否在其他地方创建?如果是这样,那部分代码如何知道我的class名字HelloWorldApp

Jig*_*shi 10

这是因为它是static方法,为此它不需要创建实例

JVM将加载HelloWorldApp该类,它将在其上调用静态方法,并且因为它是公共JVM(外部)可以访问此方法


另见

  • 封装不是编译器强制执行的规则,而是程序员用来尝试创建更好代码的原则.语言和编译器可以帮助我们实现封装,但不会强制它.即使是像Smalltalk这样的纯面向对象语言也不会强迫你遵循封装.但是,在Smalltalk中,类本身就是真正的对象,因此您可以向它们发送它们响应的消息.您甚至可以在子类中继承它们,并让子类调用super. (2认同)