一、繼承
1、作用:繼承是復用程序代碼的有力手段。
2、理解繼承:當有多個類之間存在相同的屬性時,我們可以在這些類中抽取一個父類,當子類繼承父類時,子類就能使用父類所有的方法和屬性。(子類就無需定義與父類相同的屬性)
二、繼承的基本語法
1、在java語言中,用關鍵字Extends來表示一個類繼承另一個類
解析:以上代碼表明Sub類繼承了Base類。那麼這個類到底繼承了哪些東西?分兩種情況分析。
1) 當Sub類和Base類位於同一個包中:
Sub類繼承Base類中Public、Protected和默認訪問級別的成員變量和成員方法
2) 當Sub類和Base類位於不同的包中:
Sub類繼承Base類中Public和protected訪問級別的成員變量和成員方法
為了敘述方便,有時會采用“子類繼承父類的屬性和方法”這樣籠統的方法。
3)Eg.假定Sub和Base類位於同一個包中,以下程序演示在Sub類中可繼承Base類的哪些成員變量和方法。
注意點:
1)Java語言不支持多繼承,一個類只能直接繼承一個類。
錯誤代碼如下:
Class Sub extends Base1,Base2,Base3{…….}
1) 盡管一個類只能有一個直接的父類,但是它可以有多個間接地父類
代碼如下:
Class base1 extends base2{…..}
Class Sub extends Base1{…..}
三、方法重載
1、重載方法必須滿足的條件
1)方法名相同
2方法的參數類型、個數、順序至少有一項不同
3)方法的返回值類型可以不相同
4)方法的修飾符可以不相同
2Eg
四、方法覆蓋
(一)覆蓋方法必須滿足多種約束
1)子類方法的名稱、參數簽名和返回類型必須與父類方法的名稱、參數簽名和返回類型一致。
2)子類方法不能縮小父類方法的訪問權限
3)子類方法不能拋出比父類方法更多的異常
4)方法覆蓋只存在於子類和父類(包括直接父類和間接父類)之間。在同一各類中方法只能被重載,不能被覆蓋。
5)父類的靜態方法不能被子類覆蓋為非靜態方法
6)子類可以定義與父類的靜態方法同名的靜態方法,以便在子類中隱藏父類的靜態方法
7)父類的非靜態方法不能被子類覆蓋靜態方法
8)父類的私有方法不能被子類覆蓋
五、super關鍵字