目錄
一、多态
1.1 動物的多種形态
1.2 檔案的多種形态
二、多态性
2.1 動物形态多态性的使用
2.2 檔案形态多态性的使用
2.3 序列資料類型多态性的使用
三、多态性的好處
四、小結
很多人喜歡将多态與多态性二者混為一談,然後百思不得其解,其實隻要分開看,就會很明朗。
多态指的是一類事物有多種形态,(一個抽象類有多個子類,因而多态的概念依賴于繼承)
序列資料類型有多種形态:字元串,清單,元組
動物有多種形态:人,狗,豬
注意:多态與多态性是兩種概念
多态性是指具有不同功能的函數可以使用相同的函數名,這樣就可以用一個函數名調用不同内容的函數。在面向對象方法中一般是這樣表述多态性:向不同的對象發送同一條消息,不同的對象在接收時會産生不同的行為(即方法)。也就是說,每個對象可以用自己的方式去響應共同的消息。所謂消息,就是調用函數,不同的行為就是指不同的實作,即執行不同的函數。
綜上可以說,多态性是一個接口(函數func)的多種實作(如obj.run(),obj.talk(),obj.click(),len(obj))
其實大家從上面多态性的例子可以看出,我們并沒有增加新的知識,也就是說Python本身就是支援多态性的,這麼做的好處是什麼呢?
增加了程式的靈活性:以不變應萬變,不論對象千變萬化,使用者都是同一種形式去調用,如func(animal)
增加了程式額可擴充性:通過繼承Animal類建立了一個新的類,使用者無需更改自己的代碼,還是用func(animal)去調用
上述代碼我們新增了一個形态Cat,由Cat類産生的執行個體cat1,使用者可以在完全不需要修改自己代碼的情況下。使用和人、狗、豬一樣的方式調用cat1的talk方法,即func(cat1)四、小結
多态:同一種事物的多種形态,動物分為人類,豬類(在定義角度)
多态性:一種調用方式,不同的執行效果(多态性)