多态,指的是:多种状态,即完成某个行为时,使用不同的对象会得到不同的状态。
如何理解?
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()
# 演示多态,使用2个子类对象来调用函数
dog = Dog()
cat = Cat()
make_noise(dog) # 输出:汪汪汪
make_noise(cat) # 输出:喵喵喵
同样的行为(函数),传入不同的对象,得到不同的状态
多态常作用在继承关系上.
比如:
- 函数(方法)形参声明接收父类对象
- 实际传入父类的子类对象进行工作
即:
- 父类做定义声明
- 以子类做实际工作
- 用以获得同一行为, 不同状态
抽象类(接口)
父类Animal的speak方法,是空实现
这种设计的含义是:
- 父类用来确定有哪些方法
- 具体的方法实现,由子类自行决定
这种写法,就叫做抽象类(也可以称之为接口)
扫描二维码关注公众号,回复:
16208564 查看本文章
- 抽象类:含有抽象方法的类称之为抽象类
- 抽象方法:方法体是空实现的(pass)称之为抽象方法
为什么要使用抽象类呢?
提出标准后 不同的厂家各自实现标准的要求。
抽象类就好比定义一个标准,
包含了一些抽象的方法,要求子类必须实现。
配合多态,完成
- 抽象的父类设计(设计标准)
- 具体的子类实现(实现标准)
# 演示抽象类
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.cool_wind()
midea_ac = Midea_AC()
gree_ac = GREE_AC()
make_cool(midea_ac)
make_cool(gree_ac)
总结:
1. 什么是多态?
多态指的是,同一个行为,使用不同的对象获得不同的状态。
如,定义函数(方法),通过类型注解声明需要父类对象,实际传入子类对象进行工作,从而获得不同的工作状态
2. 什么是抽象类(接口)
包含抽象方法的类,称之为抽象类。抽象方法是指:没有具体实现的方法(pass)称之为抽象方法 3. 抽象类的作用
多用于做顶层设计(设计标准),以便子类做具体实现。
也是对子类的一种软性约束,要求子类必须复写(实现)父类的一些方法
并配合多态使用,获得不同的工作状态。