2

为什么即使文件名不同,javac 也会使用默认修饰符编译类,而当访问修饰符是 public、private 或 protected 时为什么不编译?eg: 文件名: 文件类 foo{} 的测试内容

它编译时没有错误,如果我在类前面添加公共、私有或受保护的,它不会被编译任何人都可以解释为什么它会这样

4

1 回答 1

2

有两个规则

  • 如果您声明一个类型,public那么文件名应该是相同的类型可以是 aclass或 aninterface
  • 不能有一个privateprotected外部类。

为什么第一点的答案是它是定义java规范的方式。您不能将外部类声明为私有的,因为它根本没有任何用途。

  • 您可以在源文件中拥有任意类型,但只能有一种公共类型,如果有公共类型,则文件名必须与公共类型匹配。
于 2013-07-05T19:28:36.817 回答