1. 程式人生 > 其它 >找到一個或多個多重定義的符號_第七章(第5節):多重繼承

找到一個或多個多重定義的符號_第七章(第5節):多重繼承

技術標籤:找到一個或多個多重定義的符號

繼承是面向物件中一個重要的特徵,子類可以通過繼承來擴充套件父類的功能,假如我們專案中需要一個鳥人的物件,這個鳥人物件就需要用到鳥人類,此時我們可以定義兩個類 Human 類和 Bird 類,然後讓鳥人類繼承這兩個類,我們的鳥人類就具有了 Human 類和 Bird 類的特徵,這行為,我們叫做鳥人類多重繼承 Human 類和 Bird 類。

多重繼承定義

多重繼承的寫法需要在定義子類的括號內分別寫上要繼承的父類。

class 

多重繼承的子類擁有所有父類的所有屬性和方法,這和普通重繼承一樣。

class 

當我們在父類中通過建構函式定義屬性的時候,多重繼承和普通繼承採用一樣的方式(參考上一章繼承和多型一節), 也就是說,我們可以通過子類把子類的物件傳給父類(一般通過在子類的建構函式中呼叫父類的建構函式)。

class 

如果多重繼承的子類的多個父類中有重名的方法,則呼叫的是第一個繼承的父類的方法。

class 

如果多重繼承的子類的多個父類中有重名的屬性,呼叫的是到目前為止給該屬性賦值的類中的屬性,這個理所當然。

class 

如果在我們 BirdHuman 類中,我們認為該類中含有的 Human 的功能比較多, 而 Bird 類中僅僅只是一個輔助類,裡面只有很少的屬性和方法, 在 Python 中這種多重繼承關係,我們把 Bird 這種輔助類叫作 MixIn,我們寫程式碼的時候要習慣於給輔助父類命名的時候加上 MixIn,當然你也可以不加上這個關鍵字。

class 

本節重要知識點

會使用多重繼承。

知道什麼是MixIn。

作業

我們還有一種設計方案經常來替代多重繼承,專案開發中我們常常使用包含的設計方式替代繼承,比如對於鳥人類, 我們沒必要採用繼承的方式,我們可以建立一個鳥人類,在這個鳥人類裡面包含有 Bird 類的物件和 Human 類的物件,請大家寫出這種方案的實現。

閱讀原文:

多重繼承​www.birdpython.com 38d0413de8fc7afa75a2b01c424b9ef6.png