public class B extends A{
// code goes here
}
public class C extends B{
public void method1(){
C c = new C();
}
}
CはBを拡張し、BはAを拡張しているため、Cのオブジェクトを作成すると、JVMで作成されるオブジェクトの数が増えます。
public class B extends A{
// code goes here
}
public class C extends B{
public void method1(){
C c = new C();
}
}
CはBを拡張し、BはAを拡張しているため、Cのオブジェクトを作成すると、JVMで作成されるオブジェクトの数が増えます。
1つ、C
タイプの。ここに何かを追加して、30記号以上の長さの答えを作成します...
答えは1です。Callは、それ自体を拡張new C()
する実際に拡張する1つのオブジェクトを作成するため、BおよびAから継承された機能を使用できます。B
A
1つのオブジェクトが直接作成されます。初期化式またはコンストラクターコードが「new」を使用して他のオブジェクトを作成する可能性があるため、「直接」と言います。
その1つのCオブジェクトを作成すると、4つのコンストラクター呼び出しが発生します。Cのコンストラクターの本体の直前に、Bコンストラクターへの明示的または暗黙的な呼び出しがあります。同様に、BのコンストラクターはAコンストラクターを呼び出します。AコンストラクターはObjectコンストラクターを呼び出します。
オブジェクトはC、B、A、オブジェクトであり、プロセスの終わりまでに、それぞれとして初期化されます。
このプロセスの詳細については、JLSを参照してください。