重載(Overload)和重寫(Override)是面向?qū)ο缶幊讨谐S玫膬煞N概念,它們的區(qū)別如下:
重載
重載是指在一個類中定義多個方法,這些方法具有相同的名字但是參數(shù)列表不同,可以根據(jù)傳入的參數(shù)類型和數(shù)量的不同自動選擇調(diào)用合適的方法。重載可以提高代碼的復(fù)用性和可讀性。
在Python中,由于不支持方法的重載,所以可以通過函數(shù)的默認參數(shù)來實現(xiàn)類似的功能。例如:
def add(x, y=0):
return x + y
print(add(1)) # 輸出 1
print(add(1, 2)) # 輸出 3
重寫
重寫是指子類重新定義了父類中的方法,即用子類的方法覆蓋了父類的同名方法。重寫可以實現(xiàn)多態(tài),即通過子類對象調(diào)用重寫的方法,實現(xiàn)不同的行為。
在Python中,重寫的實現(xiàn)非常簡單,只需要在子類中重新定義和父類同名的方法即可。例如:
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
以上就是重載和重寫的區(qū)別。重載是指同名方法具有不同的參數(shù)列表,可以自動選擇調(diào)用合適的方法,而重寫是指子類重新定義了父類的同名方法,實現(xiàn)不同的行為。