我在Eclipse中创建了一个带有包修饰符的类。
class notPublic
{
//main() which prints a string
}
我运行了这个程序,打印出了那个字符串。但是我有一个小疑问。
我读到过“Java编译单元必须有一个公共类”,但是我的编译单元没有公共类,但它仍然可以工作。
我对这里的理解错了什么吗?
class notPublic
{
//main() which prints a string
}
我运行了这个程序,打印出了那个字符串。但是我有一个小疑问。
我读到过“Java编译单元必须有一个公共类”,但是我的编译单元没有公共类,但它仍然可以工作。
我对这里的理解错了什么吗?
PublicClassName.java
相对应。 但是,拥有不包含公共类的编译单元是完全可以的。class A{}
class B{}
class C{}
由于任何一个类都是公共的,因此您可以使用javac Dog.java编译它,这将起作用。
但是,如果您的其中一个类是公共类,则文件名必须与公共类相同,例如,如果您像下面这样修改最后一个示例:
文件 Dog.java
public class A{}
class B{}
class C{}
如果您尝试编译它,您将会得到"class A is public, should be declared in a file named A.java"的错误提示。
对于最后一点,您不能将所有类都声明为public,因为每个文件只能有一个public类。