美文网首页Python知识锦集
Python 面向对象5:多态

Python 面向对象5:多态

作者: IIronMan | 来源:发表于2018-11-15 23:26 被阅读1次

    一、多态

    • 1.1、面向对象三大特性

      • 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中
        定义类的准则

      • 继承 实现代码的重用,相同的代码不需要重复的编写

        • 设计类的技巧
        • 子类针对自己特有的需求,编写特定的代码
      • 多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果

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


          多态

    二、多态的案例(汽车、皮卡、人)

    • 2.1、需求

      • 在 Car 类中封装方法 run

        • 普通汽车只是简单的run
      • 定义Pickup(皮卡) 继承自 Car,并且重写 run 方法

        • Pickup(皮卡) 在跑的时候可以拉货
      • 定义 Person 类,并且封装人开汽车的方法 drive

        • 在方法内部,让汽车 对象 调用 run 方法
      • 案例小结

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

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

        class Car(object):
        
            def __init__(self, name):
                  self.name = name
        
            def run(self):
                  print("%s 简单的在路上跑" % self.name)
        
        class Pickup(Car):
        
            def run(self):
                  print("%s 在跑的时候可以进行拉货" % self.name)
        
        class Person(object):
        
            def __init__(self, name):
                  self.name = name
        
            def drive(self, car):
                  print("%s 开着 %s 去拉货" % (self.name, car.name))
        
                  # 让狗玩耍
                  car.run()
        
        # 1. 创建一个汽车对象
        # small_car = Car("小汽车")
        pickup = Pickup("皮卡")
        
        # 2. 创建一个Jack对象
        Jack = Person("Jack")
        
        # 3. 让Jack调用drive的方法
        Jack.drive(pickup)

    相关文章

      网友评论

        本文标题:Python 面向对象5:多态

        本文链接:https://www.haomeiwen.com/subject/clgufqtx.html