Java三大特性之繼承性
一、繼承
繼承的關鍵字extends,放在一個類名的後面,用extends關鍵字去繼承一個類,被繼承的那個類叫父類(超類、基類)superClass。當前的這個類就叫做子類。
子類extends繼承父類,就繼承了夫類許可權範圍內所擁有的東西。
-
繼承的意義:
1、提高了程式碼的複用率。
2、提高了程式碼的維護性。
因為共同的方法放在了同一個父類裡面,方便了管理和修改。
3、讓類與類之間產生關係,讓類之間聯絡的更密切。是多型性的前提(宣告父類new子類)
(*)java支援多層繼承,但不支援多繼承。一個類一次只能有一個父類,但是父類仍然可以再往上繼承父類。
-
繼承的弊端:
1、java只支援單根繼承,不支援多繼承,存在單繼承的侷限性。
2、繼承最大的弊端就是耦合度太高。
3、子類只能繼承父類成員。比如,子類不能繼承父類的私有成員
-
什麼時候去用繼承呢?
採用假設法,當什麼是什麼(...... is .......)的時候採用繼承,比如:程式猿是職業,那麼職業就是父類,程式猿只是職業的一個子類。
-
子類繼承父類的屬性與方法
1、屬性
當子類自己的屬性與父類的屬性同名時,子類會呼叫自己的屬性,這叫屬性的重寫(覆蓋、覆寫),而不去呼叫父類的該同名屬性。
2、方法
當子類存在與父類同名的方法時,呼叫自己的方法。這叫方法的重寫(覆蓋、覆寫)。
(*)注意:方法的 覆寫 與 方法的 過載 的區別
1、覆寫(重寫)
方法名與父類的相同,引數與父類的相同,返回值相同、許可權修飾符要大於等於父類的許可權修飾符。
2、過載
發生在同一個類中
方法名相同、引數不同(引數的個數、順序、型別)
與許可權修飾符、返回值無關
(*)內部類的變數查詢順序
當前方法---->本類成員---->外部類成員
(*)子類變數查詢範圍
當前方法---->本類成員---->父類成員