天天看點

【Java】16.面向對象之繼承·上(概念、作用、文法、protected、final、類加載、繼承類型)

繼承是面向對象的一個特性,注意使用時機,可結合多态活學活用。

①概念

面向對象中,繼承(Inherit)允許分等級層次地建立類。

繼承就是子類繼承父類的特征和行為,使得子類對象(執行個體)具有父類的資料和方法。

②作用

為了避免多個類重複定義共同行為。

③文法

使用extends就可以繼承父類,擁有父類的成員和行為,還可以擴充父類沒有的資料和行為。

【Java】16.面向對象之繼承·上(概念、作用、文法、protected、final、類加載、繼承類型)

子類可以直接修改父類的成員和方法。

④繼承與protected

父類的private成員也會被繼承,但無法直接使用,必須通過父類的方法存取。

顯得過于麻煩。是以可以用到protected修飾符。

這個修飾符的意思是,相同包中的類可以直接存取,不同包中的類可以通過繼承後的子類直接存取。

⑤繼承與final

final關鍵字,用在成員變量上表示可繼承不可修改;用在方法上表示不可修改、重寫;用在類上表示不可被繼承。

⑥繼承與構造函數(類加載)

子類是不繼承父類的構造方法的,它隻是調用父類的構造器初始化(隐式或顯式)且不會建立父類對象。

若類存在繼承關系,在建立子類執行個體後,會先執行父類構造函數的區塊,再執行子類構造函數的區塊。

首先開辟記憶體,然後調用類的構造函數。

第一步:

先調用父類的構造函數對這個對象進行初始化,如果子類構造函數中沒有指定,則預設調用父類的無參構造函數。如果父類自定義了構造函數即沒有無參且子類沒有指定則編譯報錯。

※ 子類指定父類的構造器需要使用到super關鍵字,super(參數)即可調用指定不同參數的父類構造函數。

第二步:

所有父類構造函數運作完畢後再繼續運作這個類自己的構造函數。

⑦繼承類型(菜鳥教程)

Java不支援多繼承但支援多重繼承。

【Java】16.面向對象之繼承·上(概念、作用、文法、protected、final、類加載、繼承類型)