zoukankan      html  css  js  c++  java
  • 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 父类中定义的
    • 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果

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

  • 相关阅读:
    Final-阶段站立会议5
    Debug阶段成员贡献分
    每周例行报告——第九周
    beta发布简评
    简易四则运算生成程序——批量出题
    每周例行报告——第八周
    每周例行报告——第七周
    每周例行报告——第六周
    课堂作业:alpha发布点评
    “四则运算生成程序——GUI支持和部分功能改进”链接
  • 原文地址:https://www.cnblogs.com/zhangfengxian/p/python-polymorphic.html
Copyright © 2011-2022 走看看