zoukankan      html  css  js  c++  java
  • python3(二十四) subClas

    """ 继承的多态 """
    __author__ = 'shaozhiqi'
    
    
    # -----------------父类------------------------
    class Animal(object):
        def run(self):
            print('Animal is running...')
    
    
    # -----------------子类------------------------
    class Dog(Animal):
        pass
    
    
    # ------------------子类----------------------------------------
    class Cat(Animal):
        pass
    
    
    # -------------------子类实例-------------------------------------
    dog = Dog()
    dog.run()  # Animal is running...
    
    cat = Cat()
    cat.run()  # Animal is running...
    
    
    # --------------------重新定义dog 有自己的run方法-------------------
    class Dog(Animal):
    
        def run(self):
            print('Dog is running...')
    
        def eat(self):
            print('Dog eating meat...')
    
    
    dog = Dog()
    dog.run()  # Dog is running...
    dog.eat()  # Dog eating meat...
    # 当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。
    # 这样,我们就获得了继承的另一个好处:多态。
    # 子类,那它的数据类型也可以被看做是父类。但是,反过来就不行:
    print(isinstance(dog, Dog))  # True
    print(isinstance(dog, Animal))  # True
    a = Animal()
    print(isinstance(a, Dog))  # False
    
    
    # -----------------------------适配----------------------------------
    def run_selfrun(animal):
        animal.run()
    
    
    run_selfrun(a)  # Animal is running...
    run_selfrun(dog)  # Dog is running...
    # 新增一个Animal的子类,run_selfrun()不需要对做任何修改,这种方法在业务中就可以向上提取,
    # 实际上,任何依赖Animal作为参数的函数或者方法都可以不加修改地正常运行,原因就在于多态。
    
    # 开闭原则:
    # 对扩展开放:允许新增Animal子类;
    # 对修改封闭:不需要修改依赖Animal类型的run_selfrun()等函数。
  • 相关阅读:
    实现treeview的动态加载
    sql server2000中使用convert来取得datetime数据类型样式(全)
    一道微软公司的面试题目的算法实现
    后台一行输入太多内容,使前台显示自动换行方法
    在js中刷新本页
    关于datediff函数的用法
    C#中StringBuilder类的使用(转)
    在字符串中使用引号("")等字符 需要用转义字符\ 例如
    常用的SQL和TSQL语句(一) (转)
    JS弹出窗口的运用与技巧(转)
  • 原文地址:https://www.cnblogs.com/shaozhiqi/p/11550436.html
Copyright © 2011-2022 走看看