python - 面向物件程式設計的三大特徵之一 - 多型
阿新 • • 發佈:2021-12-02
多型就是具有多種形態,即便不知道一個變數所引用的物件到底是什麼型別,仍然可以通過這個變數呼叫方法。
在執行過程中根據變數所引用的物件的型別,動態決定呼叫哪個物件中的方法。
如果子類中不存在指定名稱的方法,回到父類中查詢,如果父類中找到了,則呼叫父類中的方法。
多型的作用是什麼呢?
我們知道,封裝可以隱藏實現細節,使得程式碼模組化;繼承可以擴充套件已存在的程式碼模組(類);它們的目的都是為了——程式碼重用。
而多型則是為了實現另一個目的——介面重用!
class Animal(object): def __init__(self, name): self.name = name def talk(self): print("Animal talk! ") class Cat(Animal): # 繼承 Animal def talk(self): print("%s: 喵喵喵!" % self.name) class Dog(Animal): # 繼承 Animal def talk(self): print("%s: 汪汪汪!" % self.name) def func(parent): # 定義一個函式 func , 但不知道變數 parent 的型別。一個介面,多種形態 parent.talk() c = Cat("毛毛") d = Dog("憨憨") func(c) # 毛毛: 喵喵喵! func(d) # 憨憨: 汪汪汪!
程式設計其實就是一個將具體世界進行抽象化的過程,多型就是抽象化的一種體現,
把一系列具體事物的共同點抽象出來, 再通過這個抽象的事物, 與不同的具體事物進行對話,
對不同類的物件發出相同的訊息將會有不同的行為。