第九章:面向對象之OOP(第三部分,多態&多態性)
2.5 多態
- 指一類事物或對象在不同的情況下有不同的狀態
- 如:序列狀態下有多種形態:列表,元祖,集合,字典等
- 如:動物有多種形態:人類,豬類,狗類等
- 多態不是語法,是一種設計思想
代碼實例:
#多態
class Animal():
def run(self):
pass
class Person(Animal):
def run(self):
print("Walking")
class Dog(Animal):
def run(self):
print("Walking")
class Pig(Animal):
def run(self):
print("Walking")
per = Person()
dog = Dog()
pig = Pig()
per.run()
dog.run()
pig.run()
2.6 多態性
- 向不同的對象發送同一條消息(函數),不同的對象在接收時會產生不同的行爲,即:同一種調用方式,不同的執行結果
代碼實例:
#多態性
class Animal():
def run(self):
pass
class Person(Animal): #人類
def talk(self):
print("Say Hello")
class Dog(Animal): #狗類
def talk(self):
print("Say Wangwang")
class Pig(Animal): #豬類
def talk(self):
print("Say Honghong")
def talk(animal): #此處只定義了一個函數
animal.talk()
per = Person()
dog = Dog()
pig = Pig()
talk(per) #當使用同一種調用方式時,出現不同的結果,稱之爲多態性
talk(dog)
talk(pig)
結果:
Say Hello
Say Wangwang
Say Honghong
2.6.1 使用多態性的好處
- 增加了程序的靈活性。不論對象千變萬化,都是使用同一個方法(函數)調用
- 增加的程序的可擴展性。使用Animal繼承的一個新類,無需去更改原本的代碼,還是使用函數talk()去調用
2.7 多態和多態性的區別
- 多態:從定義角度上看
- 多態性:從調用(執行)角度上看