覆寫(Overriding)和多載(Overloading)
在物件導向程式語言中,覆寫(Overriding)和多載(Overloading)是兩個常見且重要的概念。它們在方法定義和調用上有不同的用途和行為。
覆寫(Overriding)
覆寫是指在子類中重新定義從父類繼承的方法。這意味著子類提供了該方法的具體實現,並且這個實現將取代父類中的版本。
覆寫的特點:
必須有相同的方法名稱、參數和返回類型。
用於實現多態性,使得子類可以根據需要改變或擴展父類的方法行為。
Python 中的覆寫示例:
python
複製程式碼
class Parent:
def show(self):
print("Parent's show method")
class Child(Parent):
def show(self):
print("Child's show method")
# 創建對象
parent = Parent()
child = Child()
parent.show() # Output: Parent's show method
child.show() # Output: Child's show method
在這個例子中,Child 類覆寫了 Parent 類的 show 方法,因此當調用 child.show() 時,執行的是 Child 類中的 show 方法。
多載(Overloading)
多載是指在同一個類中定義多個方法,這些方法具有相同的名稱但不同的參數列表(參數個數或參數類型不同)。Python 不直接支持方法多載,但可以通過可變參數或關鍵字參數來模擬。
多載的特點:
方法名稱相同,但參數列表不同。
用於增強方法的靈活性,允許方法根據不同的參數集來執行不同的操作。
Python 中的多載示例(通過可變參數模擬):
python
複製程式碼
class Example:
def add(self, a, b, c=0):
return a + b + c
# 創建對象
example = Example()
print(example.add(1, 2)) # Output: 3
print(example.add(1, 2, 3)) # Output: 6
在這個例子中,add 方法具有可選參數 c,允許我們使用不同數量的參數調用同一個方法。