*面向對象的特征——多態的意義和操作過程

簡單的說,其實多態就是“相同的表達式,不同的操作”,也可以說成“相同的命令,不同的操作”。程序在運行的過程中,根據傳遞的參數的不同,執行不同的函數或者操作不同的代碼,這種在運行過程中才確定調用的方式成為運行時多態

多態的意義在于,它實現了接口重用(同一的表達式),接口重用帶來的好處是程序更易于擴展,代碼重用更加方便,更具有靈活性,也就能真實地反映現實世界。

下面是一個簡單的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,你需要改動的東西會少很多,要是使用了配置文件那就可以不動源代碼了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容