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