您现在的位置是:首页 > 技术教程 正文

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

admin 阅读: 2024-03-24
后台-插件-广告管理-内容页头部广告(手机)

文章目录

  • 一、面向对象 - 多态
    • 1、多态概念
    • 2、多态用法
    • 3、代码示例 - 多态
  • 二、抽象类
    • 1、抽象类概念
    • 2、代码示例 - 抽象类

一、面向对象 - 多态


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

在这里插入图片描述

标签:
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

在线投稿:投稿 站长QQ:1888636

后台-插件-广告管理-内容页尾部广告(手机)
关注我们

扫一扫关注我们,了解最新精彩内容

搜索
排行榜