python面向物件學習(五)多型
阿新 • • 發佈:2018-11-19
多型
多型:不同的 子類物件 呼叫相同的 父類方法,產生不同的執行結果
- 多型 可以 增加程式碼的靈活度
- 以 繼承 和 重寫父類方法 為前提
- 是呼叫方法的技巧,不會影響到類的內部設計
多型案例練習
需求
- 在
Dog
類中封裝方法game
- 普通狗只是簡單的玩耍
- 定義
XiaoTianDog
繼承自Dog
,並且重寫game
方法- 哮天犬需要在天上玩耍
- 定義
Person
類,並且封裝一個 和狗玩 的方法- 在方法內部,直接讓 狗物件 呼叫
game
方法
- 在方法內部,直接讓 狗物件 呼叫
class Dog: def __init__(self, name): self.name = name def game(self): print("%s 很開心的玩耍..." % self.name) class XiaoTianQuan(Dog): def game(self): print("%s 飛到天上玩..." % self.name) class Person: def __init__(self, name): self.name = name def game_with_dog(self, dog): print("%s 和 %s 玩的停不下來" % (self.name, dog.name)) dog.game() xiaohuagou = Dog("小花狗") zfx = Person("張風閒") zfx.game_with_dog(xiaohuagou) xtq = XiaoTianQuan("哮天犬") zfx.game_with_dog(xtq)
案例小結
Person
類中只需要讓 狗物件 呼叫game
方法,而不關心具體是 什麼狗game
方法是在Dog
父類中定義的
- 在程式執行時,傳入不同的 狗物件 實參,就會產生不同的執行效果
多型 更容易編寫出出通用的程式碼,做出通用的程式設計,以適應需求的不斷變化!