• python面向对象学习(五)多态


    多态

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

    • 多态 可以 增加代码的灵活度
    • 继承重写父类方法 为前提
    • 是调用方法的技巧,不会影响到类的内部设计

    多态案例练习

    需求

    1. Dog 类中封装方法 game
      • 普通狗只是简单的玩耍
    2. 定义 XiaoTianDog 继承自 Dog,并且重写 game 方法
      • 哮天犬需要在天上玩耍
    3. 定义 Person 类,并且封装一个 和狗玩 的方法
      • 在方法内部,直接让 狗对象 调用 game 方法
    class Dog:
    
        def __init__(self, name):
    
            self.name = name
    
        def game(self):
    
            print("%s 很开心的玩耍..." % self.name)
    
    
    class XiaoTianQuan(Dog):
    
        def game(self):
    
            print("%s 飞到天上玩..." % self.name)
    
    
    class Person:
    
        def __init__(self, name):
    
            self.name = name
    
        def game_with_dog(self, dog):
    
            print("%s 和 %s 玩的停不下来" % (self.name, dog.name))
    
            dog.game()
    
    
    xiaohuagou = Dog("小花狗")
    
    zfx = Person("张风闲")
    
    zfx.game_with_dog(xiaohuagou)
    
    xtq = XiaoTianQuan("哮天犬")
    zfx.game_with_dog(xtq)
    

    案例小结

    • Person 类中只需要让 狗对象 调用 game 方法,而不关心具体是 什么狗
      • game 方法是在 Dog 父类中定义的
    • 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果

    多态 更容易编写出出通用的代码,做出通用的编程,以适应需求的不断变化!

  • 相关阅读:
    css3圆形轨迹动画
    css3动画
    3D效果
    css3基础下
    css3基础
    HTML5 表单 中
    HTML5 表单
    面向对象的三大特性、七大原则、类与类间的关系
    四种事务的隔离级别
    线程池(二)
  • 原文地址:https://www.cnblogs.com/zhangfengxian/p/python-polymorphic.html
Copyright © 2020-2023  润新知