8_08_多態

目標

  • 多態

面向對象三大特性

  1. 封裝 根據 職責屬性方法 封裝 到一個抽象的
    1. 定義類的準則
  2. 繼承 實現代碼的重用,相同的代碼不需要重複的編寫
    1. 設計類的技巧
    2. 子類針對自己特有的需求,編寫特定的代碼
  3. 多態 不同的 子類對象 調用相同的 父類方法,產生不同的執行結果
    1. 多態 可以 增加代碼的靈活度
    2. 繼承重寫父類方法 爲前提
    3. 是調用方法的技巧,不會影響到類的內部設計

在這裏插入圖片描述

多態案例演練

需求

  1. Dog 類中封裝方法 game
    普通狗只是簡單的玩耍
  2. 定義 XiaoTianDog 繼承自 Dog,並且重寫 game 方法
    哮天犬需要在天上玩耍
  3. 定義 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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章