3 單繼承和方法的重寫

2022-06-15 09:12:16 字數 1627 閱讀 6027

物件導向三大特性

封裝:根據職責將屬性和方法封裝到乙個抽象的類中

繼承:實現**的重用,相同**不需要重複的編寫

1.單繼承

2.多繼承

多型:不同的物件呼叫相同的方法,產生不同的執行結果,增加**的靈活度

單繼承繼承的概念、語法和特點

繼承的概念:子類擁有父類所有的方法和屬性

當不同的類裡面,有需要使用的同樣的方法時,就可以使用繼承

如下有動物類和虎類,吃、喝、睡三個方法都是一樣的,虎模擬動物類多了乙個睡的方法

虎類和動物類有三個同樣的方法,吃、喝、跑

可以用虎類繼承動物類,被繼承類是父類,繼承類是子類,子類會擁有父類的所有方法

語法:用虎類繼承動物類,虎類裡面不需要重複寫相同的 吃、喝、跑方法,建立虎物件之後就可以直接使用動物類裡的方法

子類繼承自父類,可以直接享受父類中已經封裝好的方法,不需要再次開發

子類中應該根據職責,封裝子類特有的屬性和方法

繼承和派生

tiger類是animal的子類,animal類是tiger類的父類,tiger類從animal類繼承

專業術語:

tiger類是animal的派生類,animal類是tiger類的基類,tiger類從animal類派生

繼承的傳遞性

子類會擁有父類的所有屬性,也會擁有父類的父類的所有屬性,

再建立乙個貓類,貓類繼承虎類,虎類繼承動物類,貓類也可以直接呼叫動物類的所有屬性

方法的重寫

當父類的方法實現不能滿足子類需求時,可以對方法進行重寫(override)

重寫父類有兩種情況

1.覆蓋父類的方法

2.對父類方法進行擴充套件

實現方式:

在子類中定義乙個和父類裡同名的方法並且實現

執行時,只會呼叫子類中重寫的方法,而不會再呼叫父類中封裝的方法

在虎類中重寫了drink方法,用虎物件呼叫drinl方法時就會呼叫虎類中的drink,而不會再使用動物類中的drink

用動物類呼叫drink,使用的是依舊動物類中drink方法,子類重寫父類方法,父類呼叫方法不受影響

方法的擴充套件

在開發中,子類方法的實現中包含父類的方法實現(父類原本的方法實現,是子類方法的一部分),就可以使用擴充套件的方法

實現方式:

1.在子類中重寫父類方法

2.在需要的位置使用super().父類方法來呼叫父類方法的執行

3.**其他位置針對子類的需求,編寫子類特有的**實現

關於super

在python中super是乙個特殊的類

super()就是使用super類建立出來的物件

最常使用的場景就是在重寫父類方法時,呼叫在父類中封裝的方法實現

在虎類裡面重寫動物類的drink,針對子類特有的需求編寫**,使用super().drink建立父類的drink物件

之後呼叫的時候,原有方法內容和擴充套件內容都會使用

呼叫父類方法的另外一種方式

super()方式 只可以在python3.x中使用,2.x不支援

在python 2.x中,可以使用 父類名.方法(self) 來實現呼叫(此方法也支援3.x)

在開發中,父類名和super()兩種方式不要混用

開發中如果使用當前子類名的呼叫方法,會形成遞迴呼叫,出現死迴圈

單繼承和方法的重寫

吃 def drink self print 喝 def run self print 跑 def sleep self print 睡 class dog animal 子類擁有父類所有屬性和方法 def eat self print 吃 def drink self print 喝 def ru...

繼承 和方法的重寫

繼承是從已有的類中派生出新類,新的類能吸收已有類的資料屬性和方法,並能擴充套件新的能力 修飾符 class 子類 extends 父類 繼承是單繼承,即乙個子類只有乙個父類 繼承關係具有傳遞性 例如類a有父類b,類b有父類c,則c也可以稱為是a的父類 不是直接父類 繼承提高了軟體的復用性 一處修改,...

繼承,方法的重寫

1 子類繼承父類的哪些東西?1.繼承public和protected修飾的屬性和方法,不管子類和父類是否在同乙個包裡。2.繼承預設許可權修飾符修飾的屬性和方法,但子類和父類必須在同乙個包裡。3.子類不能繼承父類中的私有屬性和方法。4.子類不能繼承父類的構造方法,子類能夠呼叫父類的構造方法。2 sup...