一、 方法的重寫或方法的覆蓋:
1.子類根據需求對父類繼承的方法進行重新編寫
2.重寫時,可以用super.方法的方式來保留父類的方法
注意:構造方法無法被重寫!!!
3.方法重寫規則:在繼承的情況下,子類的方法滿足以下條件:
1.方法名相同,引數列表相同
2.返回值型別相同或者是其父類返回值的子類
3.父類的靜態方法不可被重寫為非靜態方法,反之父類的非靜態方法也不能改寫為靜態方法。
4.子類無法重寫父類的私有方法
4.方法重寫和方法過載的區別:
3.訪問許可權不能小於於父類 方法
4.丟擲的異常不能多於父類
二、super:
super.print():訪問父類的非private方法
super.name:訪問父類的非private屬性
super(); 訪問父類的無參構造方法
super(name);訪問父類的帶參構造方法
注意:1.super 只能在子類的方法和構造方法中
2.1.super呼叫構造方法時,只能是第一句
2.子類會覆蓋父類的同名成員,此時可使用super呼叫父類被子類覆蓋的成員super,***;
3.this和super的區別:
訪問爺爺類(間接父類)的成員時,只需要寫super.xx就行,乙個子類可以同時有多個間接父類
三、繼承條件下構造方法的呼叫規則:
1.當子類構造方法沒有通過super顯式呼叫父類的有參構造方法,也沒通過this顯式呼叫自身其它構造方法時,系統預設呼叫父類的無參構造方法
2.子類使用super呼叫父類帶參構造方法時,就不會呼叫父類的無參構造方法
四、object類
1.objectk類是所有類的直接或間接父類
2.object類被子類經常重寫
3.判斷兩個物件是否為同乙個物件:==或者使用equals()
4.instanceof:用來判斷某個物件是否為某種型別
物件名 instanceof 型別
五、多型
定義:同乙個引用型別,使用不同的例項而執行不同操作
物件引用父類型別時,不能直接使用子類物件
六、抽象方法
抽象類不能被例項化,例項化毫無意義,但是可以new子類物件,抽象方法所在類必須時抽象類,但是抽象類中,可以沒有抽象方法
定義:沒有方法體,必須在抽象類裡
必須在子類中被實現,除非子類是抽象類
抽類中不一定需要抽象方法
抽象類不能被例項化,會沒有意義
涉及型別轉換的時候,如果有多種可能,最好用instanceof進行判斷
七、向上(下)轉型
父親型 引用變數=new 子型別
此方法通過父親引用變數呼叫的方法是子類覆蓋或繼承父類的方法,而不是父類的方法
在向下轉型如果沒有轉化為真實的子類型別,會出現執行報錯classcastexceptiong
向下轉型:
子型別 引用變數 =(子型別)父親型別的引用變數
05 方法重寫
在繼承關係中,子類如果定義了乙個與父類方法簽名完全相同的方法,被稱為覆寫 override 加上 override可以讓編譯器幫助檢查是否進行了正確的覆寫。例如,在person類中,我們定義了run 方法 class person 在子類student中,覆寫這個run 方法 class stude...
02 24 方法重寫與虛方法呼叫
前一篇隱藏的例項中,由於子類隱藏了父類的同名方法,如果不進行強制轉換,就無法通過父類變數直接呼叫子類的同名方法,哪怕父類變數引用的是子類變數。我們希望的是每個物件 各司其職 為了達到這個目的,可以在父類同名方法前加關鍵字virtual,表明這是乙個虛方法,子類可以重寫此方法 即在子類同名方法前加關鍵...
20201202 103 方法的重寫
類成員的繼承和重寫 成員繼承 子類繼承了父類除構造方法之外的所有成員。方法重寫 子類可以重新定義父類中的方法,這樣就會覆蓋父類的方法,也稱為 重寫 案例 繼承和重寫的案例 class person def init self,name,age self.name name self.age age ...