这更是一个谜比问题。 我有以下代码:
public class PrivateBaseConstructor {
public static class BaseClass {
private BaseClass() {
}
}
public static class DerivedClass extends BaseClass {
public DerivedClass() {
super(); // 1*
}
}
}
这里呼吁super();
在1 *允许情况下,虽然基类的构造函数是private
。 如果我们写的类在同一个包单独的类:
BClass.java
public class BClass {
private BClass() {
}
}
DClass.java
public class DClass extends BClass {
public DClass() {
super(); // 2*
}
编译器在2 *示意这是错误,因为基类构造函数是不可见的。
为什么不编译器抛出一个错误,在我的第一个方案,当两个类的一个类中声明为static?