2013-08-24 111 views

回答

4

沒有什麼不對,有暗示調用super構造函數。

你還沒有編寫任何類C的構造函數,所以默認的構造函數將由編譯器提供。

C(){ 
    super(); 
} 

如果提供了默認的構造函數,則會調用super()。 在你的情況下,C extends B所以B構造函數被調用。

如果您沒有任何其他班的班級,那麼默認情況下它也延伸Object班。所以Object類的構造函數會被調用。

+2

+1解釋構造函數鏈。 –

+0

@PaulBellora這是構造函數重載。鏈接隱式地發生在繼承樹上(Prasad解釋過)或者使用super()(也可能會重載)。 –

0

java中每個構造函數的第一行調用super構造方法,即java如何工作。 你應該閱讀它。

+1

只有當你不在這裏調用一個重載的'this()'。 –

1

當你實例化一個C會有構造函數調用C,B,A,和對象。 C必須能夠像任何直接或間接的超類一樣行事,並具有所有領域的領域。 X類構造函數的作用是使對象初始化爲X.

如果沒有聲明的構造函數,編譯器會創建一個無參數的構造函數,因此每個類都至少有一個構造函數。如果不是Object構造函數的構造函數不是以「this」或「super」構造函數調用開始的,則編譯器將其視爲以「super();」開始,即對直接超類的無參數構造函數的調用。

相關問題