好的,一个Java源文件必须至少有一个公共类,并且文件应该被称为“class-name.java”。很公平。
因此,如果我有一个类,那么以下内容将被编译:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
但是让我困惑的是,如果我从上面的代码中删除“public”访问修饰符,代码仍然可以编译通过。我就是不明白。删除后,代码如下:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!"); // Display the string.
}
}
在上面的代码中,由于我移除了“public”访问修饰符,我的类具有默认或包访问权限,即它无法从外部访问,只能在包内访问。
那么我的问题是,上面的代码如何编译? 在这种情况下,文件“HelloWorld.java”没有公共的HelloWorld类(仅有一个包私有的HelloWorld.class),因此根据我的理解不应该编译。