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