27.多态
完成某个行为时,使用不同的对象会得到不同的状态。
函数、方法形参声明接收父类对象,实际传入父类的子类对象进行工作。
以父类做定义声明,以子类做实际工作。
class Animal:
def call(self):
pass
class Dog(Animal):
def call(self):
print("汪汪叫...")
class Sheep(Animal):
def call(self):
print("咩咩叫...")
def make_noise(animal: Animal) -> str:
animal.call()
return "end"
sheep = Sheep()
# 咩咩叫...
make_noise(sheep)
dog = Dog()
# 汪汪叫...
make_noise(dog)
多态应用到抽象类上,父类方法中写了pass,该方法就是抽象方法。含有抽象方法的类就是抽象类。
# 抽象类
class AC:
def hot(self):
# 抽象方法
pass
def cold(self):
pass
def wind(self):
pass
class Greece(AC):
def hot(self):
print("格力热风")
def cold(self):
print("格力冷风")
def wind(self):
print("格力扫风")
class Aux(AC):
def hot(self):
print("奥克斯热风")
def cold(self):
print("奥克斯冷风")
def wind(self):
print("奥克斯扫风")
def make_cool(ac: AC):
ac.cold()
ac = Greece()
# 格力冷风
make_cool(ac)