多態與多態類

1、多態

多態是指:一類事物的多種形態,,(一個抽象類有多個子類,於是多態的概念依賴於繼承)linux

1.1 多態的特徵

  1. 序列數據類型有多種形態:字符串,列表,元組函數

  2. 動物有多種形態:人,狗,豬code

  3. 多態能夠具備約束性(通常狀況都有約束性,在其餘語言中約束性很強)對象

    • 法1
    class Animal:
        def speak(self):
            pass
    
    class Pig(Animal):
        def speak(self):
            print("哼哼哼")
    class Dog(Animal):
        def speak(self):
            print("汪汪汪")
    class People(Animal):
        def speak(self):
            print("say hello")
    • 法2
    #用abc實現接口的統一化,約束代碼(用的比較少)
    import abc
    #1 在父類括號內中寫metaclass=abc.ABCMeta
    class Animal(metaclass=abc.ABCMeta):
        #2第二在要約束的方法上,寫@abc.abstractmethod
    
        @abc.abstractmethod
        def speak(self):
            pass
    
    class Pig(Animal):
        # def aaa(self):
        #     print('哈哈哈')
        # 若是子類中沒有speak方法,就會報錯
        def speak(self):
            print('哼哼哼')
    pig = Pig()
    • 法三繼承

      #用異常處理來實現
      class Animal():
          def speak(self):
              # 主動拋出異常
              raise Exception('必需要重寫哦')
      class Pig(Animal):
          #若是沒有會報錯
          def speak(self):
              print('哼哼哼')
      
      pig = Pig()
    • 鴨子類:只要走路像鴨子(對象中有某個綁定方法),那你就是鴨子接口

      class Pig:
          def speak(self):
              print('哼哼哼')
      class People:
          def speak(self):
              print('哈哈哈')
      pig = Pig()
      people = People()
      def animal_speak(obj):
          obj.speak()
      animal_speak(pig)
      animal_speak(people)

2、多態性

多態性是指:具備不一樣功能的函數可使用相同的函數名,這樣就能夠用一個函數名調用不一樣內容的函數。在面向對象方法中通常是這樣表述多態性:向不一樣的對象發送同一條消息,不一樣的對象在接收時會產生不一樣的行爲(即方法)。也就是說,每一個對象能夠用本身的方式去響應共同的消息。所謂消息,就是調用函數,不一樣的行爲就是指不一樣的實現,即執行不一樣的函數。內存

  1. 多態性:多種形態的不一樣體現
  2. 多態性依賴於:繼承
  3. 多態性:定義統一的接口
class Animal:
    def speak(self):
        pass

class Pig(Animal):
    def speak(self):
        print("哼哼哼")
class Dog(Animal):
    def speak(self):
        print("汪汪汪")
class People(Animal):
    def speak(self):
        print("say hello")

pig = Pig()
dog = Dog()
people = People()


def animal_speak(obj):
    obj.speak()
animal_speak(pig)
animal_speak(dog)
animal_speak(people)
#

哼哼哼
汪汪汪
say hello

2.1 多態性的優勢

  1. 增長了程序的靈活性:以不變應萬變,不論對象變幻無窮,使用者都是同一種形式去調用,如func(animal)
  2. 增長了程序額可擴展性:經過繼承Animal類建立了一個新的類,使用者無需更改本身的代碼,仍是用func(animal)去調用

三 linux中的多態與多態性

  • 傳統的寫法
class File:
    def read(self):
        pass
    def write(self):
        pass
#內存類
class Memory(File):
    def read(self):
        print("Memory....read")
    def write(self):
        print('Memory.....write')
  • 鴨子類型的寫法字符串

    class Memory:
        def read(self):
            print("Memory....read")
        def write(self):
            print('Memory.....write')
    
    class Network:
        def read(self):
            print("Memory....read")
        def write(self):
            print('Memory.....write')

4、小結

多態:同一種事物的多種形態,動物分爲人類,豬類(在定義角度)
多態性:一種調用方式,不一樣的執行效果(多態性)it

相關文章
相關標籤/搜索