簡單的說,其實多態就是“相同的表達式,不同的操作”,也可以說成“相同的命令,不同的操作”。程序在運行的過程中,根據傳遞的參數的不同,執行不同的函數或者操作不同的代碼,這種在運行過程中才確定調用的方式成為運行時多態
多態的意義在于,它實現了接口重用(同一的表達式),接口重用帶來的好處是程序更易于擴展,代碼重用更加方便,更具有靈活性,也就能真實地反映現實世界。
下面是一個簡單的Python程序,更直觀的體現運行時多態
>>>class Man:
>>> ? def intro(self):
>>> ? ? ? print("我的姓名是XXXXXXXXXXXXXXXXXXXXXX")
>>>class Women:
>>> ? def intro(self):
>>> ? ? ?print("我的姓名是oooooooooooooooooooooo")
>>>def introduction(person):
>>> ? ? person.intro()
>>>m = Man()
>>>w = Women()
>>>introduction(m)
>>>introduction(w)
這里運行結果為:
我的姓名是XXXXXXXXXXXXXXXXXXXXXX
我的姓名是oooooooooooooooooooooo
這里定義了兩個類man類和woman類但是方法相同,都是intro(self):但是輸出結果卻不同,這說明運行時這個方法有兩種形態,這就叫運行時多態
其實多態就是多重狀態。比如有一個父類superClass,它有2個子類subClass1,subClass2。superClass有一個方法func(),兩個子類都重寫了這個方法。那么我們可以定義一個superClass的引用obj,讓它指向一個子類的對象,那么我們調用obj.func()方法時候,會進行動態綁定,也就是obj它的實際類型的func()方法,即subClass1的func()方法。這種由于子類重寫父類方法,然后用父類引用指向子類對象,調用方法時候會進行動態綁定,這就是多態。多態對程序的擴展具有非常大的作用,比如你要再有一個subClass3,你需要改動的東西會少很多,要是使用了配置文件那就可以不動源代碼了。