プライベートコンストラクタがある場合、JVMはスーパーコンストラクタへの呼び出しを挿入しますか?クラス内のプライベートコンストラクタの使用
私はそのプライベートコンストラクタのsuper()
コールを参照しています。
class Alpha {
static String s="";
protected Alpha(){
s+="alpha";
}
}
class SubAlpha extends Alpha{
private SubAlpha(){
s+="sub";
}
}
class SubSubAlpha extends Alpha{
private SubSubAlpha(){
s+="subsubAlpha";
}
public static void main(String[] args){
new SubSubAlpha();
System.out.print(s);
}
}
ここではコンパイルエラーは発生しません。ここではSubSubAlpha
クラスにプライベートコンストラクタがあります。コンパイラはsuper()
を挿入している場合は、SubAlpha
クラスで何が起こるかを呼び出します。私有のコンストラクタもあります。そして、もしそれがアクセスされなければ、継承ツリーはどのように上まで続くのですか?
(スーパークラスの引数なしのコンストラクタがない場合は、民間(および派生クラス:
このプログラムの出力は、自動呼び出しを示してい同じ外部クラスに属していないか、またはデフォルトのアクセスであり、派生クラスが同じパッケージにないか、または単に欠落している場合)、派生クラスのコンストラクタに明示的な 'super()'または 'this() 'class Base {private Base(){}は、 } class Derived extends Base {} ') –
' class SubSubAlpha extends SubAlpha'を意味しましたか? –