Python面向對象編程之繼承(基礎篇九)

二 面向對象編程

1 單繼承

<1> 繼承的概念

  • 現實中的繼承

在現實生活中,繼承一般指的是子女繼承父輩的財產

  • 程序中的繼承

小總結:

  • 在程序中,繼承描述的是多個類之間的所屬關系。
  • 如果一個類A里面的屬性和方法可以復用,則可以通過繼承的方式,傳遞到類B里。
  • 那么類A就是基類,也叫做父類;類B就是派生類,也叫做子類

<2> 單繼承

子類只有一個父類

小總結:

  • 雖然子類沒有定義__init__方法初始化屬性,也沒有定義實例方法,但是父類有。所以只要創(chuàng)建子類的對象,就默認執(zhí)行了那個繼承過來的__init__方法

  • 子類在繼承的時候,在定義類時,小括號()中為父類的名字

  • 父類的屬性、方法,會被繼承給子類

2 多繼承

子類同時有多個父類

小總結:

  • 多繼承可以繼承多個父類,也繼承了所有父類的屬性和方法
  • 注意:如果多個父類中有同名的 屬性和方法,則默認使用第一個父類的屬性和方法(根據類的魔法屬性mro的順序來查找)
  • 多個父類中,不重名的屬性和方法,不會有任何影響。

3 重寫方法

<1> 子類重寫父類的同名屬性和方法

<2> 子類調用父類的同名屬性和方法

<3> 使用super()調用父類方法

小總結:

  • 子類繼承了多個父類,如果父類類名修改了,那么子類也要涉及多次修改。而且需要重復寫多次調用,顯得代碼臃腫。

  • 使用super() 可以逐一調用所有的父類方法,并且只執(zhí)行一次。調用順序遵循 mro 類屬性的順序。

  • 如果繼承了多個父類,且父類都有同名方法,則默認只執(zhí)行第一個父類的(同名方法只執(zhí)行一次,目前super()不支持執(zhí)行多個父類的同名方法)**

  • super() 在Python2.3之后才有的機制,用于通常單繼承的多層繼承。

4 多層繼承

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容