1. 程式人生 > >python面向物件學習(五)多型

python面向物件學習(五)多型

多型

多型:不同的 子類物件 呼叫相同的 父類方法,產生不同的執行結果

  • 多型 可以 增加程式碼的靈活度
  • 繼承重寫父類方法 為前提
  • 是呼叫方法的技巧,不會影響到類的內部設計

多型案例練習

需求

  1. Dog 類中封裝方法 game
    • 普通狗只是簡單的玩耍
  2. 定義 XiaoTianDog 繼承自 Dog,並且重寫 game 方法
    • 哮天犬需要在天上玩耍
  3. 定義 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 父類中定義的
  • 在程式執行時,傳入不同的 狗物件 實參,就會產生不同的執行效果

多型 更容易編寫出出通用的程式碼,做出通用的程式設計,以適應需求的不斷變化!