class A {
A() {
System.out.print("A");
}
}
class B extends A {
B() {
System.out.print("B");
}
}
class C extends B {
C() {
System.out.print("C");
}
}
public class My extends C {
My(){
super();
}
public static void main(String[] args) {
My m = new My();
}
}
質問はインタビューの1つの質問から始まります(Javaでオブジェクトを作成するとどうなりますか?)
そして答えは…
最も派生したクラスのコンストラクターが呼び出されます。コンストラクターが最初に行うことは、そのスーパークラスのコンストラクターを呼び出すことです。java.lang.Object は Java のすべてのオブジェクトの基本クラスであるため、このプロセスは java.lang.Object のコンストラクターが呼び出されるまで続きます。コンストラクターの本体が実行される前に、すべてのインスタンス変数初期化子と初期化ブロックが実行されます。次に、コンストラクターの本体が実行されます。したがって、基本クラスのコンストラクターが最初に完了し、最も派生したクラスのコンストラクターが最後に完了します。
したがって、上記のステートメントによると、答えはABCCである必要がありますが、 ABCのみが表示されます。super()
ただし、派生コンストラクターでコメントしている場合。次に、出力はABCです。上記の段落を誤解していましたか、理解するのを手伝ってください。?