嵌套类中私有构造函数的范围
2022-09-01 10:52:26
这与其说是问题,不如说是一个谜题。我有以下代码:
public class PrivateBaseConstructor {
public static class BaseClass {
private BaseClass() {
}
}
public static class DerivedClass extends BaseClass {
public DerivedClass() {
super(); // 1*
}
}
}
这里允许对 1* 的调用,即使基类构造函数是 。如果我们将这些类作为单独的类写在同一个包中:super();
private
BClass.java
public class BClass {
private BClass() {
}
}
DClass.java
public class DClass extends BClass {
public DClass() {
super(); // 2*
}
编译器正确地给出了2*处的错误,因为基类构造函数不可见。
为什么在我的第一个场景中,当两个类在一个类中都声明为静态时,编译器不引发错误?