super以及子類對象實例化全過程

關鍵字:super

1.super 關鍵字可以理解爲:父類的
2.可以用來調用的結構:
屬性、方法、構造器
3.super調用屬性、方法:
3.1 我們可以在子類的方法或構造器中。通過使用"super.屬性"或"super.方法"的方式,顯式的調用父類中聲明的屬性或方法。但是,通常情況下,我們習慣省略"super."
3.2 特殊情況:當子類和父類中定義了同名的屬性時,我們要想在子類中調用父類中聲明的屬性,則必須顯式的使用"super.屬性"的方式,表明調用的是父類中聲明的屬性。
3.3 特殊情況:當子類重寫了父類中的方法以後,我們想在子類的方法中調用父類中被重寫的方法時,則必須顯式的使用"super.方法"的方式,表明調用的是父類中被重寫的方法。


4.super調用構造器:
4.1 我們可以在子類的構造器中顯式的使用"super(形參列表)"的方式,調用父類中聲明的指定的構造器
4.2 "super(形參列表)"的使用,必須聲明在子類構造器的首行!
4.3 我們在類的構造器中,針對於"this(形參列表)"或"super(形參列表)"只能二一,不能同時出現
4.4 在構造器的首行,沒顯式的聲明"this(形參列表)"或"super(形參列表)",則默認調用的是父類中空參的構造器:super()
4.5 在類的多個構造器中,至少一個類的構造器中使用了"super(形參列表)",調用父類中的構造器

子類對象實例化全過程

理解即可。
1.從結果上看:繼承性
> 子類繼承父類以後,就獲取了父類中聲明的屬性或方法。
> 創建子類的對象,在堆空間中,就會加載所父類中聲明的屬性。
2.從過程上看:
當我們通過子類的構造器創建子類對象時,我們一定會直接或間接的調用其父類的構造器,進而調用父類的父類的構造器,...直到調用了java.lang.Object類中空參的構造器爲止。正因爲加載過所的父類的結構,所以纔可以看到內存中父類中的結構,子類對象纔可以考慮進行調用。

圖示:

 

 

3.強調說明:
雖然創建子類對象時,調用了父類的構造器,但是自始至終就創建過一個對象,即爲new的子類對象。