JavaSE基礎知識分享(四)

ikestu小猪發表於2024-08-09

寫在前面

前面講的是物件導向中的封裝思想,下面讓我們來看看繼承這部分的內容!

繼承

概述

多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那麼多個類無需再定義這些屬性和行為,只要繼承那個類即可。

透過extends關鍵字可以實現類與類的繼承: class 子類名 extends 父類名 {} 單獨的這個類稱為父類,基類或者超類;這多個類可以稱為子類或者派生類。 有了繼承以後,我們定義一個類的時候,可以在一個已經存在的類的基礎上,還可以定義自己的新成員。

子類只能繼承父類所有非私有的成員(成員方法和成員變數),其實這也體現了繼承的另一個弊端,打破了封裝性,子類不能繼承父類的構造方法,但是可以透過super(後面講)關鍵字去訪問父類構造方法。

關鍵字
extends
語句定義格式:
class A extends B {}
A:子類,派生類
B:父類,基類,超類
繼承使用注意事項:
- 類與類之間只能單繼承,不能多繼承。
- 可以多層繼承,形成繼承體系。
- 子類只能繼承父類中非私有的成員。
- 子類無法繼承父類的構造方法,但是可以使用。
- 子類無法繼承父類中的靜態成員,但是可以使用。
- 要想初始化子類,必須先初始化其父類。

super
概述
super 代表的是直接父類的引用,可以在子類中使用直接父類的成員。

使用方式:
成員變數:super.成員變數
構造方法:super(...)
成員方法:super.父類方法名(...)
注意事項:
- 針對在子類中使用 super 呼叫父類的構造方法時,子類的構造方法預設第一句話是 super()。
- 若父類中沒有無參構造方法,可以使用 super 顯示地呼叫父類的有參構造方法進行初始化。

重寫
重寫發生在繼承關係中,子類的方法名、返回值型別、引數列表都與父類的一樣,只是方法體實現不一樣,可以使用 @Override 來驗證。

注意事項:
-子類無法重寫父類中私有的成員方法、靜態的成員方法。
-子類重寫的方法許可權修飾符不能比父類的還要低,無特殊要求的話,與父類的許可權保持一致。

final
概述:
final 關鍵字表示最終的,不可改變的。

final修飾區域性變數
在方法內部,該變數不可以被改變。
在方法宣告上,分別演示基本型別和引用型別作為引數的情況。
基本型別,是值不能被改變。
引用型別,是地址值不能被改變。

final修飾變數的初始化時機:
在物件構造完畢前即可。

注意事項:
-類:不能被繼承。
-變數:變為常量,值不能被修改。
-方法:子類無法重寫,但是可以使用。

好了,今天的分享到這就結束了,物件導向思想在初學時還是比較難懂的,大家一定要多多練習,查缺補漏,才能把它學好。

相關文章