標籤:
繼承
單繼承/多層繼承--super關鍵字
執行個體應用
this/super使用對比
方法的複寫【複寫與重載的關係】
子父類的構造方法調用順序
父類私人變數的使用
final關鍵字
1:繼承
(1)把多個類中的相同的屬性和行為進行抽取,封裝到一個類中,
然後再建立新類的時候,不需要從頭做起,繼承剛才定義的那個類即可。
(2)好處:
A:提高代碼的複用性。
B:讓類與類之間產生了一個關係,是多態的前提。
(3)什麼時候使用繼承?
A:如果類之間存在著:
is a 的關係,就可以考慮使用繼承。類之間存在所屬關係時
B:不要為了繼承部分功能,而去使用繼承。
(4)繼承的特點:
A:Java只支援單繼承,不支援多繼承。
為什麼?如果支援多繼承,就會有調用不明確的問題。
B:Java支援多層(重)繼承。
(5)super和this的區別?
A:super是一個關鍵字,代表父類的儲存空間標識。(可以理解為父親的引用)
B:它和this的用法相似
a:成員變數
this.變數--本類的
super.變數--父類的
b:構造方法
this(...)--本類的
super(...)--父類的
c:成員方法
this.方法名()--本類的
super.方法名()--父類的
(6)子父類中成員變數的用法:
A:名稱不同,這個太簡單了。對應調用
B:名稱相同,子類對象的在使用的時候:
先找子類局部範圍
再找子類成員範圍
最後找父類成員範圍
(7)子父類中成員方法的用法:
A:名稱不同,這個太簡單了。對應調用
B:名稱相同,子類對象的在使用的時候:
先找子類的
再找父類的
C:方法重寫
在子類中,方法聲明(修飾符,傳回值,方法名,參數列表)相同的情況。
注意事項:
a:父類中私人方法是不能被重寫
b:子類方法的存取權限一定要大於等於父類的存取權限
c:靜態只能重寫靜態。(這個不能算,因為靜態跟類相關)
(8)子父類中構造方法的用法:
A:子類的初始化過程中,首先回去執行父類的初始化動作。
因為子類的構造方法中預設有一個super()。
為什麼?子類要使用父類的成員變數,這個初始化,必須在子類初始化之前完成。
所以,子類的初始化過程中,會先執行父類的初始化。
B:如果父類沒有無參構造方法
A:使用super調用父類的帶參構造。推薦方式。
B:使用this調用本身的其他構造。
2:代碼塊
(1)執行順序:
靜態代碼塊 --> 構造代碼塊 --> 構造方法
樣本:一個靜態代碼塊在一次程式載入中只運行一次;靜態代碼塊優先於構造方法執行。
(2)注意事項:
靜態代碼塊只執行一次【.class檔案載入一次的情形】
3:final
(1)是一個關鍵字,可以用於修飾類,成員變數,成員方法。
(2)特點:
它修飾的類不能被繼承。
它修飾的成員變數是一個常量。
它修飾的成員方法是不能被子類重寫的。
java基礎--第九天