首页 > 技术文章 > 🍖类的多态与多态性

songhaixing 2020-12-25 09:16 原文

一.多态

1."甚么似"多态

多态是指一类事物有多种形态

2.例 : 动物的多种形态 : 人, 鸭子, 猪...

class Animal:
    def speak(self):
        print(f"开口说话")

#动物的形态之一:人
class People(Animal):
    def speak(self):
        print('呵呵呵')

#动物的形态之二:狗
class Duck(Animal):
    def speak(self):
        print('嘎嘎嘎')

#动物的形态之三:猪
class Pig(Animal):
    def speak(self):
        print('咕咕咕')

Peo1 = People()
Duc1 = Duck()
Pig1 = Pig()

Peo1.speak()  # 呵呵呵
Duc1.speak()  # 嘎嘎嘎
Pig1.speak()  # 咕咕咕

Peo1, Duc1, Pig1对象都属于一个类

同一类的事物调用相同的方法, 但执行的效果却不一样, 这就是多态

3.例 : 文件的多种形态 : 文本文件, 可执行文件

class File:
    def click(self):
        pass

# 文件的形态之一:文本文件
class Text(File):
    def click(self):
        print('打开文件')

# 文件的形态之二:可执行文件
class ExeFile(File):
    def click(self):
        print('执行文件')

T1 = Text()
E1 = ExeFile()

T1.click()  # 打开文件
E1.click()  # 执行文件

T1, E1属于同一个类, 但是他们调用同一个方法, 表现出来的效果却不一样


二.多态性

1.什么是多态性

多态性指的是在不考虑对象的具体类型下, 直接使用对象的方法, 同一种调用方式, 运行的效果不一样 (这就需要在设计时, 把对象的调用方法设计成形式统一的一种)

面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息,不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数

  • 例 : 下课铃响了(同一种调用方式), 老师执行下班的操作, 学生执行放学的操作(执行后的不同效果)
  • 例 : 每月十五号(同一种调用方式), 老板执行发工资操作, 员工执行收工资操作(执行后的不同效果)
  • 例 : 白晚班交替(同一种调用方式), 白班执行下班的操作, 晚班执行上班的操作(执行后的不同效果)

2.多态性的使用

class Animal:
    def speak(self):
        print(f"开口说话")

# 动物的形态之一:人
class People(Animal):
    def speak(self):
        print('呵呵呵')

# 动物的形态之二:狗
class Duck(Animal):
    def speak(self):
        print('嘎嘎嘎')

# 动物的形态之三:猪
class Pig(Animal):
    def speak(self):
        print('咕咕咕')

Peo1 = People()
Duc1 = Duck()
Pig1 = Pig()

=============================================

推荐阅读