WeHelp
掌握基礎的 Python 觀念、語法、和程式運作流程,以及物件導向程式的入門技巧。
  1. Python 快速開始
  2. 資料、資料型態
  3. 變數的使用
  4. 運算符號
  5. IF 條件判斷
  6. Match 條件判斷
  7. While 迴圈
  8. For 迴圈
  9. 函式基礎
  10. 函式進階
  11. 類別、物件基礎
  12. 類別的繼承
  13. 模組與封包
  14. 例外處理
類別的繼承
## Python 類別繼承簡介 **繼承(Inheritance)** 是物件導向程式設計的重要概念,讓子類別(subclass)可以重複使用父類別(parent class)中的屬性與方法,並可進一步新增或修改功能。 ### 基本語法 ```python class 父類別: # 屬性與方法 pass class 子類別(父類別): # 新增或覆寫屬性與方法 pass ``` 子類別會自動擁有父類別的公開方法與屬性。 --- ## 範例一:基本繼承與方法覆寫 ```python class Animal: def speak(self): print("動物發出聲音") class Dog(Animal): def speak(self): print("狗叫:汪汪") animal = Animal() dog = Dog() animal.speak() # 動物發出聲音 dog.speak() # 狗叫:汪汪 ``` `Dog` 繼承了 `Animal`,並且重新定義(覆寫)了 `speak()` 方法,因此呼叫 `dog.speak()` 時會使用子類別自己的版本。 --- ## 範例二:使用 `super()` 呼叫父類別建構方法 ```python class Person: def __init__(self, name): self.name = name def introduce(self): print(f"我是 {self.name}") class Student(Person): def __init__(self, name, student_id): super().__init__(name) # 呼叫父類別的 __init__() self.student_id = student_id def introduce(self): super().introduce() # 呼叫父類別的方法 print(f"學號是 {self.student_id}") student = Student("小明", "S001") student.introduce() ``` 輸出: ```text 我是 小明 學號是 S001 ``` `super()`可以用來呼叫父類別的方法,避免重複撰寫相同程式碼。 --- ## 使用上的注意事項 1. **子類別可以覆寫父類別方法** 若子類別定義了相同名稱的方法,呼叫時會優先使用子類別版本。 2. **覆寫 `__init__()` 時要注意初始化父類別** 若子類別有自己的 `__init__()`,通常應使用: ```python super().__init__(...) ``` 否則父類別的屬性可能不會被正確建立。 3. **使用 `super()` 比直接指定父類別名稱更具彈性** ```python super().method() ``` 比直接寫: ```python Parent.method(self) ``` 更適合未來修改類別結構,也較適用於多重繼承。 4. **繼承應該符合「是一種」的關係** 例如「狗是一種動物」適合使用繼承;但「汽車有一個引擎」通常應使用組合(composition),而不是繼承。 5. **可使用 `isinstance()` 檢查物件是否屬於某個類別** ```python isinstance(student, Person) # True ``` 總之,繼承可以減少重複程式碼,並讓類別之間形成清楚的階層關係;但不應為了重複使用少量程式碼而濫用繼承。
相關學習地圖、教學課程
Python 資料工程
從 0 開始,成為資料工程師的學習路徑。
Python 後端工程、資料庫
從 0 開始,成為後端工程師的學習路徑。