这更像是一个谜而不是问题。我有以下代码:
public class PrivateBaseConstructor {
public static class BaseClass {
private BaseClass() {
}
}
public static class DerivedClass extends BaseClass {
public DerivedClass() {
super(); // 1*
}
}
}
super();
即使基类构造函数是 ,这里也允许调用at 1* private
。如果我们将这些类写成同一个包中的单独类:
BClass.java
public class BClass {
private BClass() {
}
}
DClass.java
public class DClass extends BClass {
public DClass() {
super(); // 2*
}
编译器正确地在 2* 处给出错误,因为基类构造函数不可见。
当两个类都在一个类中声明为静态时,为什么编译器在我的第一个场景中不会抛出错误?