介面類的多繼承

2022-06-22 22:54:21 字數 1066 閱讀 6143

#

動物園#

老虎 tiger 走路 游泳

#天鵝 swan 走路 游泳 飛

#老鷹 oldying 飛 走路

from abc import

abstractmethod, abcmeta

#介面的多繼承

#介面類

class swim_animal(metaclass=abcmeta): #

游泳@abstractmethod

def swim(self): #

被繼承的子類必須實現,如果子類不實現,那子類在例項化時將會報錯

pass

class walk_animal(metaclass=abcmeta): #

走@abstractmethod

defwalk(self):

pass

class fly_animal(metaclass=abcmeta): #

飛@abstractmethod

deffly(self):

pass

class tiger(walk_animal, swim_animal): #

老虎類,繼承走、游泳介面類,則必須實現走與游泳介面,否則例項化時報錯

defwalk(self):

pass

defswim(self):

pass

class

oldying(fly_animal, walk_animal):

pass

class

swan(swim_animal, walk_animal, fly_animal):

pass

#介面隔離原則:使用多個專門的介面,而不使用單一的總介面。即客戶端不應該依賴那些不需要的介面

#上面的例子剛好滿足介面隔離原則

#介面類的使用場景:實現乙個類時,想要規範這個類中哪些函式是必須要實現的,如果不實現在例項化時就進行報錯,這種場景下可以用介面類進行規範

#將類必須要實現的方法,寫在乙個介面類中,然後那個類去繼承這個介面,如果那個類沒有實現介面規定的方法,則例項化時報錯

類在繼承類的同時實現多介面

介面和類之間可以通過實現產生關係,同時類與類之間可以通過繼承產生關係。當乙個類已經繼承了乙個父類,它又需要擴充套件額外的功能,這時介面就派上用場了。子類通過繼承父類擴充套件功能,通過繼承擴充套件的功能都是子類應該具備的基礎功能。如果子類想要繼續擴充套件其他類中的功能呢?這時通過實現介面來完成。cla...

類的繼承 多繼承

多繼承要注意很多地方,以下 只是最基本多繼承方式,下面會講到多繼承的基本格式和繼承方法 簡單說明 1 如果在子類中需要父類的構造方法就需要顯示的呼叫父類的構造方法,或者不重寫父類的構造方法。2 在呼叫基類的方法時,需要加上基類的類名字首,且需要帶上 self 引數變數。區別在於類中呼叫普通函式時並不...

介面之間的多繼承

package cn.ly.day.seven.twentytwo 1.類與類之間是單繼承的,直接父類只有乙個。2.類與介面之間是多實現的,乙個類可以實現多個介面。3.介面與介面之間是多繼承的。注意事項 1.多個介面當中的抽象方法如果重複,沒關係。2.多個父介面當中的預設方法如果重複。那麼子介面必須...