標籤:java 繼承 類
繼承:把多個類中相同的內容提取出來,定義到一個類中,其他類只需要繼承該類,就可以使用該類公開的屬性和公開的方法。
繼承的好處:提高代碼的複用性。提高代碼的可維護性。讓類與類之間產生關係,是多態存在的一個前提。
繼承的弊端:提高了類與類之間的耦合性。
開發的原則:低耦合,高內聚
耦合:類與類之間的關係
內聚:自己單獨完成某件事情的能力。
在Java中只允許單繼承。一個類如果沒有顯示的繼承其他類,則該類的預設父類為Object類。Object類是所有類的父類。
Java支援多層繼承。
父類的公開方法可以訪問父類的私人方法和私人成員。
子類只能繼承父類所有非私人的成員(成員方法和成員變數)。
子類不能繼承父類的構造方法,但是可以通過super()關鍵字去訪問父類的構造方法。
不要為了部分功能而去繼承。
什麼時候考慮採用繼承?
繼承體現的是is-a的關係。
採用假設法:有兩個類A和B,如果A是B的一種具體體現,或者B是A的一種具體體現時,就可以採用繼承。
繼承中,成員變數的關係:子父類中各定義了一個同名成員變數時,子類中的成員變數會覆蓋父類中的成員變數。在子類中可以通過super來調用父類中的同名變數。
在子類方法中訪問一個變數的尋找順序:
a:在子類的對應的局部範圍內尋找,有就是用
b:在子類的成員範圍內尋找,有就是用。
c:在父類的成員範圍內尋找,有就是用。
如果都沒有找到,則報錯。
在一個類中,方法與方法之間是平級關係,方法之間不能訪問對方的局部變數。
super和this的區別:
this代表本類對象的引用
super代表父類儲存空間的標示,相當於父類的引用。
this和super都可以訪問構造方法、成員變數和成員方法。
繼承間構造方法之間的關係。
子類所有的構造方法預設都會去訪問父類的無參構造方法。
因為子類會繼承父類中的資料,可能會用到父類中的資料,所以在子類初始化之前,一定要完成父類的初始化。
每一個構造方法的第一條語句預設都是:super
如何父類中沒有構造方法,該怎麼辦呢?
子類通過super去顯示調用父類其他的帶參的構造方法
子類通過this去調用本類的其他構造方法,本類其他構造也必須首先訪問了父類構造
一定要注意:
super(…)或者this(….)必須出現在第一條語句上,否則,就會有父類資料的多次初始化
繼承間成員方法的關係
子父類中各定義了一個同名成員方法時,子類中的成員方法會覆蓋父類中的成員方法。在子類中可以通過super來調用父類中的同名方法。
通過子類對象去訪問一個方法的尋找順序:
a:在子類中尋找,如果找到就調用
b:在父類中尋找,如果找到就調用
如果都沒有找到,就報錯。不會尋找父類的父類……
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
java中繼承關係學習小結