【Python】面向对象 - 多态 ( 多态概念 | 多态用法 | 抽象类概念 | 代码示例 )
后台-插件-广告管理-内容页头部广告(手机) |
文章目录
- 一、面向对象 - 多态
- 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
后台-插件-广告管理-内容页尾部广告(手机) |