为什么 javac 使用默认修饰符编译类,即使文件名不同,为什么当访问修饰符是 public、private 或 protected 时却不编译? 例如:文件名:测试 文件内容 foo 类{}
它的编译没有错误,如果我在类的前面添加公共(public)的、私有(private)的或 protected ,它就不会被编译,谁能解释为什么会这样
最佳答案
有两条规则
- 如果您将类型声明为
public
,那么文件名应该相同,类型可以是class
或interface
- 不能有
private
或protected
外部类。
为什么第一点的答案是它是定义 Java 规范的方式。 您不能将外部类声明为私有(private)的,因为它根本没有任何用途。
- 源文件中可以有任意类型,但只能有一个公共(public)类型,如果有公共(public)类型,文件名必须与公共(public)类型相匹配。
关于javac 使用默认访问修饰符编译类,即使文件名不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17495339/