18_python基础—面向对象-多态

简介: 18_python基础—面向对象-多态

一、 多态


1.1 定义(重点)


多态 :不同的 子类对象 调用相同的 父类方法,产生不同的执行结果


多态 可以 增加代码的灵活度

以 继承 和 重写父类方法 为前提

是调用方法的技巧,不会影响到类的内部设计


70d7de55084140e4ba0aa22ac6ce425d.png


1.2 实现步骤


多态指的是一类事物有多种形态,(一个抽象类有多个子类,因而多态的概念依赖于继承)。


定义:多态是一种使用对象的方式,子类重写父类方法,不同子类对象调用相同父类方法,可以产生不同的执行结果

好处:调用灵活,有了多态,更容易编写出通用的代码,做出通用的编程,以适应需求的不断变化!


实现步骤:


定义父类,并提供公共方法

定义子类(继承父类),并重写父类方法

传递子类对象给调用者,可以看到不同子类执行效果不同


1.3 体验多态


需求:警务人员和警犬一起工作,警犬分2种:追击敌人和追查毒品,携带不同的警犬,执行不同的工作


分析:


1.在 Dog 类中封装方法 work


普通狗只是简单的工作


2.定义不同种类狗的


定义 ArmyDog 继承自 Dog,并且重写 work 方法

定义 DrugDog 继承自 Dog,并且重写 work 方法


3.定义 Person 类,并且封装一个 和狗工作 的方法


在方法内部,直接让 狗对象 调用 work 方法


案例小结


Person 类中只需要让 狗对象 调用 work 方法,而不关心具体是 什么狗

work 方法是在 Dog 父类中定义的

在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果。

# 需求:警务人员和警犬一起工作,警犬分2种:追击敌人和追查毒品,携带不同的警犬,执行不同的工作
# 1. 定义父类,提供公共方法: 警犬 和 人
class Dog(object):
    def work(self):  # 父类提供统一的方法,哪怕是空方法
        pass
# 2. 定义子类,子类重写父类方法:定义2个类表示不同的警犬
class ArmyDog(Dog):   # 继承Dog类
    def work(self):   # 子类重写父类同名方法
        print('追击敌人...')
class DrugDog(Dog):
    def work(self):
        print('追查毒品...')
# 定义人类
class Person(object):
    def work_with_dog(self, dog):  # 传入不同的对象,执行不同的代码,即不同的work函数
        dog.work()    # 在方法内部,直接让 狗对象 调用 work 方法
# 3. 创建对象,调用不同的功能,传入不同的对象,观察执行的结果
ad = ArmyDog()
dd = DrugDog()
jingyuan = Person()
jingyuan.work_with_dog(ad)
jingyuan.work_with_dog(dd)


追击敌人…

追查毒品…

目录
相关文章
|
1月前
|
Python
请简述Python中的继承、封装和多态的概念。
【2月更文挑战第24天】【2月更文挑战第82篇】请简述Python中的继承、封装和多态的概念。
|
1月前
|
Python
python-面向对象
python-面向对象
15 2
|
4月前
|
Python
Python 面向对象编程:什么是面向对象编程(OOP)?解释封装、继承和多态的概念。
Python 面向对象编程:什么是面向对象编程(OOP)?解释封装、继承和多态的概念。
41 0
|
2天前
|
Python
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
Python从入门到精通:深入学习面向对象编程——2.1.2继承、封装和多态的概念
|
10天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
52 0
|
1月前
|
Python
在Python中,如何实现多态?
在Python中,如何实现多态?
20 1
|
1月前
|
Java 程序员 数据安全/隐私保护
Python教程第6章 | Python面向对象
Python面向对象概念、类的定义和调用、类方法、修改和增加类属性、类和对象、初始化函数、类的继承、类的多态、类的访问控制
44 0
|
1月前
|
Python
一篇文章带你搞懂Python中的继承和多态
一篇文章带你搞懂Python中的继承和多态
20 1
|
1月前
|
Python
|
2月前
|
机器学习/深度学习 人工智能 IDE
Python是一种高级、解释型、交互式和面向对象的脚本语言
Python是一种高级、解释型、交互式和面向对象的脚本语言
25 2