Python 面向对象 - 05 多态

👀👀

一、概念

  • 多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果
    • 多态 可以 增加代码的灵活度
    • 继承重写父类方法 为前提
    • 是调用方法的技巧,不会影响到类的内部设计

例子:

需求

  1. Animal 类中封装方法 play
    • 一群动物在玩
  2. 定义 Dog 继承自 Animal,并且重写 play 方法
    • 小灰狗不想跟其他动物玩
  3. 定义 Person 类,并且封装一个 和狗玩 的方法
    • 在方法内部,直接让 狗对象 调用 play 方法
class Animal(object):
    def __init__(self,name):
        self.name = name

    def play(self):
        print("一群动物在玩 %s" %(self.name))

class Dog(Animal):

    def play(self):
        print("%s不想跟其他动物玩" %(self.name))

class Person(object):

    def __init__(self,name):
        self.name = name

    def game_with_dog(self,dog):
        print("%s和%s在愉快的晚上" %(self.name,dog.name))
        # 让狗玩
        dog.play()
        
        
dog = Dog("小灰狗")
zhangsan = Person("张三")
zhangsan.game_with_dog(dog)

打印结果


图片.png

案例小结

  • Person 类中只需要让 狗对象 调用 play 方法,而不关心具体是 什么狗
    • play 方法是在 Animal 父类中定义的
  • 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 初识面向对象 楔子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战...
    go以恒阅读 1,006评论 0 6
  • 面向对象介绍 范式编程 编程是程序员用 特定的语法+数据结构+算法 组成的代码来告诉计算机如何执行任务的过程。 一...
    drfung阅读 2,037评论 0 1
  • 面向对象笔记 一、 对象在内存中的存放方法以及被调用过程 class文件首先被加载到方法区中的class文件内容区...
    VictorBXv阅读 579评论 0 2
  • Java OOP 什么是面向对象思想? 把一组数据和处理他们的方法组成对象(object),把相同行为的对象归纳为...
    chonglingliu阅读 910评论 0 1
  • 1 面向对象No6 面向对象 OO Object Oriented 编程时以对象为单元,封装数据和逻辑,以此提...
    征程_Journey阅读 1,267评论 0 2

友情链接更多精彩内容