面向對象特性:多態 的理解

父類的一些成員,子類繼承周去重寫從而實現不同的功能。

import abc
class Animal(metaclass=abc.ABCMeta): #同一類事物:動物
    @abc.abstractmethod
    def talk(self):
        pass

class People(Animal): #動物的形態之一:人
    def talk(self):
        print('say hello')

class Dog(Animal): #動物的形態之二:狗
    def talk(self):
        print('say wangwang')

class Pig(Animal): #動物的形態之三:豬
    def talk(self):
        print('say aowu')

多態分爲兩種,編譯時的多態和運行時的多態。
編譯時的多態性:編譯時的多態性是通過重載來實現的。對於非虛的成員來說,系統在編譯時,根據傳遞的參數、返回的類型等信息決定實現何種操作。
運行時的多態性:運行時的多態性就是指直到系統運行時,才根據實際情況決定實現何種操作。C#中運行時的多態性是通過覆寫虛成員實現。 
重載指的是同一個累中有兩個或者多個名字但是參數不同的方法。

重寫有override修飾符和new 修飾符兩種:
override是指“覆蓋”,是指子類覆蓋了父類的方法,子類的對象無法再訪問父類中的該方法。
new是指“隱藏”,是指子類隱藏了父類的方法,通過一定的轉換,可以在子類的對象中訪問父類的方法。

動態綁定是多態的基礎。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章