多態

面向對象三大特性python

  1. 封裝 根據 職責 將 屬性 和 方法 封裝 到一個抽象的  中
    • 定義類的準則
  2. 繼承 實現代碼的重用,相同的代碼不須要重複的編寫
    • 設計類的技巧
    • 子類針對本身特有的需求,編寫特定的代碼
  3. 多態 不一樣的 子類對象 調用相同的 父類方法,產生不一樣的執行結果編程

    • 多態 能夠 增長代碼的靈活度
    • 以 繼承 和 重寫父類方法 爲前提
    • 是調用方法的技巧,不會影響到類的內部設計

     

     

    spa

多態案例演練

需求設計

  1. 在 Dog 類中封裝方法 game
    • 普通狗只是簡單的玩耍
  2. 定義 XiaoTianDog 繼承自 Dog,而且重寫 game 方法
    • 哮天犬須要在天上玩耍
  3. 定義 Person 類,而且封裝一個 和狗玩 的方法
    • 在方法內部,直接讓 狗對象 調用 game 方法

 

 

code

案例小結對象

  • Person 類中只須要讓 狗對象 調用 game 方法,而不關心具體是 什麼狗
    • game 方法是在 Dog 父類中定義的
  • 在程序執行時,傳入不一樣的 狗對象 實參,就會產生不一樣的執行效果

多態 更容易編寫出出通用的代碼,作出通用的編程,以適應需求的不斷變化!blog

class Dog(object): def __init__(self, name): self.name = name def game(self): print("%s 蹦蹦跳跳的玩耍..." % self.name) class XiaoTianDog(Dog): def game(self): print("%s 飛到天上去玩耍..." % self.name) class Person(object): def __init__(self, name): self.name = name def game_with_dog(self, dog): print("%s 和 %s 快樂的玩耍..." % (self.name, dog.name)) # 讓狗玩耍 dog.game() # 1. 建立一個狗對象 # wangcai = Dog("旺財") wangcai = XiaoTianDog("飛天旺財") # 2. 建立一個小明對象 xiaoming = Person("小明") # 3. 讓小明調用和狗玩的方法 xiaoming.game_with_dog(wangcai) 
相關文章
相關標籤/搜索