重載(Overload)和重寫(Override)是面向對象編程中常用的兩種概念,它們的區別如下:
重載
重載是指在一個類中定義多個方法,這些方法具有相同的名字但是參數列表不同,可以根據傳入的參數類型和數量的不同自動選擇調用合適的方法。重載可以提高代碼的復用性和可讀性。
在Python中,由于不支持方法的重載,所以可以通過函數的默認參數來實現類似的功能。例如:
def add(x, y=0):
return x + y
print(add(1)) # 輸出 1
print(add(1, 2)) # 輸出 3
重寫
重寫是指子類重新定義了父類中的方法,即用子類的方法覆蓋了父類的同名方法。重寫可以實現多態,即通過子類對象調用重寫的方法,實現不同的行為。
在Python中,重寫的實現非常簡單,只需要在子類中重新定義和父類同名的方法即可。例如:
class Animal:
def eat(self):
print("Animal is eating")
class Cat(Animal):
def eat(self):
print("Cat is eating")
cat = Cat()
cat.eat() # 輸出 Cat is eating
以上就是重載和重寫的區別。重載是指同名方法具有不同的參數列表,可以自動選擇調用合適的方法,而重寫是指子類重新定義了父類的同名方法,實現不同的行為。