6

我想问一下java中的类声明是否只能是public默认

我读过一个文件中只能有一个public类,该文件应该是类的名称。

例如Test.java

public class Test {

}

但我观察到,在一个类中,我可以没有public类,但可以有许多默认类。

例如Exam.java

class Exam {

}

class Examination {

}

为什么我只能有一个public类,但一个文件中可以有多个默认类?

4

2 回答 2

8

为什么我只能有一个公共类,但一个文件中可以有多个默认类?

7.6. 顶级类型声明

这个限制意味着每个编译单元最多只能有一个这样的类型。此限制使 Java 编译器可以轻松地在包中找到命名类。在实践中,许多程序员选择将每个类或接口类型放在自己的编译单元中,无论它是公共的还是被其他编译单元中的代码引用。

如果一个类没有修饰符(默认修饰符),则只能从同一个包中访问它。

于 2013-10-16T11:19:39.007 回答
3

正如另一位回答者指出的那样,这是一个设计决策。这有助于您长期组织代码。不过,您可以拥有公共内部类。

于 2013-10-16T11:28:17.823 回答