当前位置:   article > 正文

【Python】面向对象 - 多态 ( 多态概念 | 多态用法 | 抽象类概念 | 代码示例 )_python 多态

python 多态





一、面向对象 - 多态




1、多态概念


" 多态 " 指的是 多种状态 , 相同类型 的 不同 对象 完成 某个行为时 , 会得到不同的状态 ;

多态 一般 是 通过 继承 和 方法重写 实现 , 多个子类 继承 同一个父类 ,

这些 子类对象 重写 父类的 方法 , 实现不同的逻辑 ,

为 父类 类型变量 赋值 不同的 子类对象 , 当调用被重写的父类方法时 , 执行不同的逻辑 , 此时就实现了多态 ;


子类重写父类的方法 , 这意味着子类可以定义与父类相同名称的方法 , 但实现方式可以不同 ;

当通过子类对象调用该方法时 , 将执行子类的方法 , 而不是父类的方法 ;

这种行为使得子类可以对相同的消息做出不同的响应 , 实现了多态 ;


2、多态用法


" 多态 " 是通过继承关系 实现的 ;

多态使用规则 :

  • 父类进行成员声明 , 大多数是成员方法声明 ;
  • 子类重写成员方法 , 做实际的工作 ;
  • 为 多个 父类 类型变量 分别 赋值 不同类型的 子类 实例对象 ;
  • 执行 父类 实例对象 的同一个方法 , 得到的结果是不同的 ;

3、代码示例 - 多态


下面的代码中 ,

Animal 类是 父类 , 其中定义了行为 make_sound 方法 ,

Dog 类 和 Cat 类 继承 Animal 类 , 并重写了 Animal 父类的 make_sound 方法 ,

为 类型注解 为 Animal 类型的变量 , 分别赋值 Animal 实例对象 , Dog 实例对象 , Cat 实例对象 ,

当调用 这三个对象的 make_sound 方法 , 会执行不同的操作 ;

  • Animal 实例对象 打印 " 动物发音 " ;
  • Dog 实例对象 打印 " 汪汪 " ;
  • Cat 实例对象 打印 " 喵喵 " ;

代码示例 :

"""
面向对象 - 多态
"""


class Animal:
    name = "Animal"
    age = 0

    def make_sound(self):
        print("动物发音")


class Dog(Animal):
    def make_sound(self):
        print("汪汪")


class Cat(Animal):
    def make_sound(self):
        print("喵喵")


animal: Animal = Animal()
animal.make_sound()

print("")

dog: Animal = Dog()
dog.make_sound()

print("")

cat: Animal = Cat()
cat.make_sound()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
'
运行

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
动物发音

汪汪

喵喵

Process finished with exit code 0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

在这里插入图片描述





二、抽象类




1、抽象类概念


父类 只 定义 空方法 , 方法体是 pass , 没有具体实现 ;

  • 父类只定义有哪些方法
  • 子类负责实现具体的方法逻辑

这种 父类 , 就是 " 抽象类 " ;


方法体为空 , 也就是 pass 的方法 , 称为 " 抽象方法 " ;

有 " 抽象方法 " 的类 , 称为 抽象类 ;


2、代码示例 - 抽象类


定义抽象类 Animal 类 ,

在 Animal 类中, 定义了抽象方法 make_sound 方法 , 该方法的 方法体为空 , 是 pass , 没有任何逻辑 ;

子类 Cat / Dog 继承 Animal 类 , 实现 make_sound 方法 , 分别执行不同的操作 ;


代码示例 :

"""
面向对象 - 多态
"""


class Animal:
    def make_sound(self):
        pass


class Dog(Animal):
    def make_sound(self):
        print("汪汪")


class Cat(Animal):
    def make_sound(self):
        print("喵喵")


dog: Animal = Dog()
dog.make_sound()

print("")

cat: Animal = Cat()
cat.make_sound()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
'
运行

执行结果 :

Y:\002_WorkSpace\PycharmProjects\pythonProject\venv\Scripts\python.exe Y:/002_WorkSpace/PycharmProjects/HelloPython/hello.py
汪汪

喵喵

Process finished with exit code 0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号