1. 程式人生 > 其它 >python - 面向物件程式設計的三大特徵之一 - 多型

python - 面向物件程式設計的三大特徵之一 - 多型

多型就是具有多種形態,即便不知道一個變數所引用的物件到底是什麼型別,仍然可以通過這個變數呼叫方法。

在執行過程中根據變數所引用的物件的型別,動態決定呼叫哪個物件中的方法。
如果子類中不存在指定名稱的方法,回到父類中查詢,如果父類中找到了,則呼叫父類中的方法。


多型的作用是什麼呢?

我們知道,封裝可以隱藏實現細節,使得程式碼模組化;繼承可以擴充套件已存在的程式碼模組(類);它們的目的都是為了——程式碼重用。
而多型則是為了實現另一個目的——介面重用!



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)  # 憨憨: 汪汪汪!

程式設計其實就是一個將具體世界進行抽象化的過程,多型就是抽象化的一種體現,

把一系列具體事物的共同點抽象出來, 再通過這個抽象的事物, 與不同的具體事物進行對話,

對不同類的物件發出相同的訊息將會有不同的行為。