【一】什么是多态
-
多态是指一个事物的多种形态
【二】示例
-
例如动物类中有猫类、狗类、猪类
import abc # 总类 动物类 class Animal(metaclass=abc.ABCMeta):@abc.abstractmethoddef talk(self):pass # 具体类 猫类 class Cat(Animal):def talk(self):print(f"喵") # 具体类 狗类 class Dog(Animal):def talk(self):print(f"汪")
【三】什么是多态性
-
指事务的多种形态的性质
-
多态性绑定在继承的背景下使用时,有时也称为多态性
-
多态性是指在不考虑实例类型的情况下使用实例
例如:
-
老师和学生都接收到到下课铃声响了的信息
-
老师执行的是下班操作
-
学生执行的是放学操作
-
虽然二者接收到的信息一样但是,执行效果不同
-
【1】静态多态性
运算+表达式
【2】动态多态性
import abc # 总类 动物类 class Animal(metaclass=abc.ABCMeta):@abc.abstractmethoddef talk(self):pass # 具体类 猫类 class Cat(Animal):def talk(self):print(f"喵") # 具体类 狗类 class Dog(Animal):def talk(self):print(f"汪") class People(Animal):def talk(self):print(f"说话") def talk(obj):obj.talk() people = People() cat = Cat() talk(people) # 说话 talk(cat) # 喵
【四】为什么要学多态性
增强代码的可读性和可扩展性
【五】鸭子类型
-
理解:长得像鸭子,走起来像鸭子,叫起来像鸭子,你就是鸭子!
-
这是一个概念 ,在每一个语言中都有这样一个概念,这是一种语言风格
【1】在Java里面
-
定义接口,并且继承后的接口必须重写
【2】在python中不一样
-
强制重写父类方法需要使用抽象类
# 二者都像鸭子,因而就可以当鸭子一样去用 class NormalDuck():def eat(self):print(f"正常鸭子可以吃饭") def walk(self):print(f"正常鸭子可以走路") class RockDuck():def eat(self):print(f"肉鸭子可以吃饭") def walk(self):print(f"肉鸭子可以走路")