物件導向三大特性
封裝:根據職責將屬性和方法封裝到乙個抽象的類中
繼承:實現**的重用,相同**不需要重複的編寫
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...