在面向?qū)ο蟪绦蛟O(shè)計中,除了封裝和繼承特性外,多態(tài)也是一個非常重要的特性,下面詳細(xì)了解什么是多態(tài)。
我們都知道,Python是弱類型語言,即在使用變量時,無需為其指定具體的數(shù)據(jù)類型,這就可能出現(xiàn),同一個變量會賦值不同的類對象,例如:
classBird:
defmove(self,field):
print('鳥在%s'%field)
classDog:
defmove(self,field):
print('狗在%s'%field)
a=Bird()
a.move("飛")
a=Dog()
a.move("跑")
運行結(jié)果為:
鳥在飛
狗在跑
可以看到,a可以被先后賦值為Bird類和Dog類的對象。而在此基礎(chǔ)上,發(fā)生多態(tài)還要滿足以下2個前提條件:繼承:多態(tài)一定是發(fā)生在子類和父類之間;重寫:子類重寫了父類的方法。
因此,下面程序是對前面代碼的改寫:
classAnimal:
defmove(self,field):
print("動物在%s"%field)
classBird(Animal):
defmove(self,field):
print('鳥在%s'%field)
classDog(Animal):
defmove(self,field):
print('狗在%s'%field)
a=Animal()
a.move("叫")
a=Bird()
a.move("飛")
a=Dog()
a.move("跑")
運行結(jié)果為:
動物在叫
鳥在飛
狗在跑
此程序中,Bird和Dog類都繼承自Animal類,且都各自重寫了父類的move()方法。從運行結(jié)果可以看出,同一個變量a在執(zhí)行同一個move()方法時,由于x指向的對象不同,因此實際調(diào)用的并不是同一個move()方法,這就是多態(tài)。
以上內(nèi)容為大家介紹了Python培訓(xùn)之多態(tài)是什么,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。