これは質問というよりはパズルです。私は次のコードを持っています:
public class PrivateBaseConstructor {
public static class BaseClass {
private BaseClass() {
}
}
public static class DerivedClass extends BaseClass {
public DerivedClass() {
super(); // 1*
}
}
}
ここではsuper();
、基本クラスのコンストラクターが。であっても、at1*の呼び出しが許可されていますprivate
。クラスを同じパッケージ内の個別のクラスとして作成する場合:
BClass.java
public class BClass {
private BClass() {
}
}
DClass.java
public class DClass extends BClass {
public DClass() {
super(); // 2*
}
基本クラスのコンストラクターが表示されないため、コンパイラーは2*でエラーを正しく出します。
両方のクラスが1つのクラス内で静的に宣言されている場合、最初のシナリオでコンパイラがエラーをスローしないのはなぜですか?