目標
- 多態
面向對象三大特性
- 封裝 根據 職責 將 屬性 和 方法 封裝 到一個抽象的 類 中
- 定義類的準則
- 繼承 實現代碼的重用,相同的代碼不需要重複的編寫
- 設計類的技巧
- 子類針對自己特有的需求,編寫特定的代碼
- 多態 不同的 子類對象 調用相同的 父類方法,產生不同的執行結果
- 多態 可以 增加代碼的靈活度
- 以 繼承 和 重寫父類方法 爲前提
- 是調用方法的技巧,不會影響到類的內部設計
多態案例演練
需求
- 在
Dog
類中封裝方法game
普通狗只是簡單的玩耍 - 定義
XiaoTianDog
繼承自Dog
,並且重寫game
方法
哮天犬需要在天上玩耍 - 定義
Person
類,並且封裝一個 和狗玩 的方法
在方法內部,直接讓 狗對象 調用game
方法
案例小結
Person
類中只需要讓 狗對象 調用game
方法,而不關心具體是 什麼狗game
方法是在Dog
父類中定義的
- 在程序執行時,傳入不同的 狗對象 實參,就會產生不同的執行效果
多態 更容易編寫出出通用的代碼,做出通用的編程,以適應需求的不斷變化!
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)