(二)Java入門--繼承


一、繼承的概念

繼承就是子類繼承父類的特徵和行爲,使得子類對象(實例)具有父類的實例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行爲。

二、成員變量

1、子類存在就不找父類;子類不能直接訪問父類的私有變量(但可以間接使用get函數訪問);
2、super關鍵字:相對於this來說,this是指向自身類中變量,super是指向父類中的變量。
父子繼承內存關係

3、圖中父子繼承內存關係:左上角是棧,右上角是堆,下面是代碼段。
4、對於父中private修飾的變量,子不能繼承,但是在創建子對象時,堆中會出現這些變量,但是不能直接初始化,只能通過父中的this對其初始化。

三、成員函數

1、當子父類中出現成員函數一模一樣的時候,會運行子類的函數,這叫做函數的覆蓋(重寫)。(重載是在同一類中進行)。
2、覆蓋的注意事項:子類權限必須大於等於父類權限才能覆蓋;靜態只能被靜態覆蓋;
3、什麼時候採用覆蓋操作?當對一個類中的函數進行擴展時,可以建立一個子類進行對其的函數進行擴展。相當於更新操作啊。

四、構造函數

1、子類不能繼承父類的構造函數,但是父類的構造函數帶有參數的,則必須在子類的構造函數中顯式地通過super關鍵字調用父類的構造器並配以適當的參數列表。
2、如果父類有無參構造函數,則在子類的構造函數中用super調用父類構造器不是必須的,如果沒有使用super關鍵字,系統會自動調用父類的無參構造函數(隱藏了super();)。
(若父類有參數的構造器,自子類必須用super調用並配上參數;若父類有無參數的構造器,子類不用super,系統自動調用無參構造器)。
3、子類的成員變量是在父類構造函數和變量進行初始化運行完成以後,纔會去初始化子類的成員變量(子類出生以後,第一件事是想着去找父親,找完父親再去忙自己的事情)。

五、final關鍵字

可以修飾類、變量、方法;
1、修飾的類:爲最終類不能不繼承,若類是final的,則其中的方法自動爲final,但是變量不是。
2、修飾的變量爲常量,只能被賦值一次;
3、修飾的方法不可以覆蓋(不能被子類重寫)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章