2012-12-01 99 views
0
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中創建多少個對象。在JVM中創建對象

+6

您是否對此主題做過任何研究? –

+2

擴展另一個類的類中的對象不需要來自父類的對象工作。它只是將這些類用作模板,然後從它自己的類中創建一個對象。 –

+0

如果它想訪問父類中的某些變量,該怎麼辦 – bhalkian

回答

1

將直接創建一個對象。我說「直接」,因爲初始化表達式或構造函數代碼可以使用「new」創建其他對象。

創建一個C對象將導致4所構造函數調用。在C構造函數的主體之前,有一個對B構造函數的顯式或隱式調用。同樣,B的構造函數調用A構造函數,該構造函數調用Object構造函數。

該對象是一個C,並且是一個B,並且是一個A,並且是一個對象,並且在該過程結束時將被初始化爲它們中的每一個。

欲瞭解此流程的完整細節,請參閱the JLS

2

一,C類型。要在這裏補充一下,使答案在長的30個符號......

1

答案是1 呼叫new C()創建確實延伸B擴展A本身一個對象,所以你可以使用從B和A繼承功能