用最直白的語言解釋最複雜的概念,一系列教學讓你在短時間內掌握 Python
上一篇淺談完物件導向的概念之後,要來講一下比較進階的用法啦!這次來講一下「繼承(Inheritance)」,之後也會寫到多型(polymorphism)、封裝(encapsulation)這些進階寫法喔~
繼承(Inheritance)
當不同類別之間重複性很高,每當創建一個類別,就需要重複寫一樣的程式碼,此時就能讓子類別直接繼承父類別的所有屬性跟方法
- 父類別(Superclass):被繼承者
- 子類別(Subclass):繼承者,可使用並擴充父類別內容
class 子類別(父類別)

由上述範例可見,子類別 Dog
並沒有定義任何屬性跟方法,但是他創造的物件 dog
卻有屬性 name
跟方法 speak
,這兩個都是由父類別 Animal
繼承而來
覆寫(Override)
當子類別定義了與父類別相同名稱的方法,會自動覆寫原有的方法

這邊可以看到 dog
跟 cat
的方法 speak
已經不是 "Animal sound",這是因為在定義類別時重新定義了與父類別同樣名稱的方法,所以覆寫了原先繼承的方法(同理,屬性也可以用一樣的方法覆寫喔!)
super( )
如果在覆寫中還想保留父類別的行為,可以用 super()
呼叫原方法

- 第11行:呼叫父類別的屬性,子類別
Dog
的屬性name
即為父類別的屬性name
- ➡ 最後輸出的
{original_sound}
呈現出的 name 是 Buddy - 第15行:呼叫父類別的方法
speak
多重繼承(Multiple Inheritance)
子類別可同時繼承多個父類別,但如果同名方法出現,會依照從左到右的順序決定優先權

從上面的例子可知,由於子類別的定義是 Child(Father, Mother)
,所以當繼承的兩個父類別都有方法 job
時,會以位於左邊的父類別 (Father) 為主
喜歡別忘了給我個讚或按下追蹤喔🫡