《java程式設計》第六週學習總結
繼承:繼承是一種由已有的類建立新類的機制。
利用繼承,可以先定義一個共有屬性的一般類,根據該一般類再定義具有特殊屬性的子類,子類繼承一般類的屬性和行為,並根據需要增加自己的新屬性和行為
子類:由繼承得到的類成為子類
父類:被繼承的類成為父類(超類)
注:java不支援多重繼承,既子類只能有一個父類(is-a關係)
子類
子類宣告:
class 子類名 extends 父類名{。。。}
Object類是所有類的祖先類,任何類都是object類的子孫類,一個類只能有一個父類,父類可以有零個或多個子類
子類的繼承性
子類的成員有一部分是自己宣告定義的,有一部分是從父類中繼承的,被繼承的成員變數可以直接被子類定義的例項方法操作。
子類和父類在同一包中的繼承性
如果子類和父類在同一包內,子類繼承父類中不是private的成員變數/方法作為自己的成員變數/方法
注:程式碼中沒加限定符“如public”等的,則預設為友好
子類和父類不在同一包中的繼承性
不在同一包內只能繼承protected和public
protected的進一步說明
一個類A中的protected成員變數和方法可以被他的子孫類繼承
在同一個類D類中建立了一個物件,那麼該物件總是可以通過“.”運算子訪問繼承的或自己定義的protected變數/方法
在不同類如在B類中用D建立的物件boy,該物件通過“."運算子訪問protected變數或方法的許可權如下:
1.對子類D自己宣告的protected成員變數/方法,只要B類和D類在同一個包內則可以訪問
2.對於子類D從父類繼承的protected成員變數/方法,則要看祖先類A類是否跟B類在同一個包中,是則boy物件能訪問繼承的protected成員變數/方法
instanceof運算子 :判斷某一個物件是否是某一個類的物件
instanceofyun'suan的結果為 ture 和false
成員變數的隱藏
當所宣告的成員變數的名字和從父類繼承來的成員變數的名字相同時(型別可以不同),從父類繼承來的成員變數會被隱藏
方法重寫(也成為方法覆蓋)
子類也可以通過方法重寫隱藏已繼承的方法:重新定義這個方法,但型別和父類型別一致,並且方法的名字,引數個數,引數的型別和父類的方法完全相同
重寫的目的:通過方法重寫把父類的狀態和行為改編為自己的狀態和行為
super關鍵字
子類一旦隱藏繼承的變數/方法,該變數/方法就只歸關鍵字super所有
如果想使用被隱藏的變數or方法,則要使用關鍵字super,例如:
super.x super.play()
final關鍵字