我有一个文件Test.java和里面的代码.
public class Abcd
{
//some code here
}
Run Code Online (Sandbox Code Playgroud)
现在这个类没有编译,但是当我删除public修饰符时,它编译得很好.
Java背后的原因是什么允许我们在不公开时编译与文件名不同的类名.
我知道这是一个新手问题,但我无法找到一个好的解释.
我写了以下代码
class Hello //Note the class is not public
{
public static void main(String args[]) {
System.out.println("Hello");
}
}
因此,当我运行它时,它运行正常并打印输出"Hello".
但是,如果JVM规范要求主要方法应该是公开的,因为"它不能看到主要的",那么它不应该也适用于类吗?如果JVM"未能看到"Hello.main(),当它未被声明为public时,它如何能够看到A类本身.
除了"因为规范是这样说的"之外,还有其他解释吗?
如果JVM能够看到所有类和方法,因为它本身就是"安全/可见性执行器",那么为什么需要将main方法声明为public.