1.理解多态的概念
多态,指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。
如何理解?
同样的行为(函数),传入不同的对象,得到不同的状态。
多态常作用在继承关系上.
比如:
- 函数(方法)形参声明接收父类对象
- 实际传入父类的子类对象进行工作
即:
- 以父类做定义声明
- 以子类做实际工作
- 用以获得同一行为,不同状态
代码演示:
"""
演示面向对象的多态特性以及抽象类(接口)的使用
"""
class Animal:
def speak(self):
pass
class Dog(Animal):
def speak(self):
print("汪汪汪")
class Cat(Animal):
def speak(self):
print("喵喵喵")
def make_noise(animal: Animal):
"""制造点噪音,需要传入Animal对象"""
animal.speak()
# 演示多态,使用两个子类对象来调用函数
dog = Dog()
cat = Cat()
make_noise(dog)
make_noise(cat)
输出结果:
汪汪汪
喵喵喵
2.理解抽象类
上面的例子中,父类的Animal的speak方法,是空实现。这种设计的含义是:
- 父类用来确定有哪些方法
- 具体的方法实现,由子类自行决定
这种写法,就叫做抽象类(也可以称之为接口
)
抽象类
∶含有抽象方法的类称之为抽象类
抽象方法
:方法体是空实现的( pass)称之为抽象方法
为什么要使用抽象类呢?
不同厂家的具体实现方法我们并不知道,抽象类就好比定义一个标准,包含了一些抽象的方法,要求子类必须实现。
3.演示抽象类
#演示抽象类
class AC:
def cool_wind(self):
"""制冷"""
pass
def hot_wind(self):
"""制热"""
pass
def swing_l_r(self):
"""左右摆风"""
pass
class Midea_AC(AC):
def cool_wind(self):
print("美的空调制冷")
def hot_wind(self):
print("美的空调制热")
def swing_l_r(self):
print("美的空调左右摆风")
class GREE_AC(AC):
def cool_wind(self):
print("格力空调制冷")
def hot_wind(self):
print("格力空调制热")
def swing_l_r(self):
print("格力空调左右摆风")
def make_cool(ac:AC): # 需要传入的对象是一个AC,用注解来告诉这是一个AC空调对象
ac.cool_wind()
midea_ac = Midea_AC()
gree_ac = GREE_AC()
make_cool(midea_ac)
make_cool(gree_ac)
运行结果:
美的空调制冷
格力空调制冷