zoukankan      html  css  js  c++  java
  • Python面向对象14.重写

    一、引入

    我们知道一个子类如果继承了父类,那么当通过子类对象去调用一个方法时,如果子类对象中没有此方法,那么就会到继承的父类中查询,如果查询到有则进行调用

    但是

    有时,我们发现子类继承的父类的方法不能100%满足子类对象的需求,则此时就需要在子类中定义一个与父类相同的名字的方法,此时子类对象调用这个方法时即使父类中有,但依然不会调用,而是调用子类中的方法

    二、什么是重写

    我们把子类中定义了与父类中相同名字的方法,叫做重写(大白话就是:子类的方法覆盖了父类中的同名方法)

    三、示例

    class Father(object):
        def play_game(self):
            print("父类中的play_game")
    
        def drink(self):
            print("父类中的drink方法")
    
    
    class Son(Father):
        def play_game(self):
            print("子类中的play_game")
    
    
    father = Father()
    father.play_game()  # 调用父类中的方法,因为对象是父类创建的
    
    son = Son()
    son.play_game()  # 调用子类中的方法,因为在子类中重写了play_game方法
    son.drink()  # 调用父类中的方法,因为子类中并没有重写此方法
    

      

     

    运行效果

    父类中的play_game
    子类中的play_game
    父类中的drink方法
    

      

     

    四、总结

    如果父类中的方法在子类继承时发现并不符合子类的需求,此时我们在子类中重写这个方法即可

    切记:不要直接在父类中修改此方法,如果将父类中的方法改成你子类的功能,虽然子类创建的对象可以100%满足要求,但你并不能保证其它继承这个父类的子类也需要同样的功能,所以在以后的开发工作中,一个父类定义好了之后,就不要轻易的修改,否则继承它的子类都要进行修改,这个工作量是非常大的,请不要这么做

  • 相关阅读:
    可重入锁 RLOCK(转)
    python 全局变量的简单理解
    urlopen设置代理方法
    python is id == 的差别,cmp方法
    FutureTask
    Java基础复习
    计算机编程底层基础
    Microsoft.NET框架程序设计20 CLR寄宿、应用程序域、反射
    Microsoft.NET框架程序设计19 自动内存管理(垃圾收集)
    Microsoft.NET框架程序设计17 委托
  • 原文地址:https://www.cnblogs.com/dong4716138/p/15751652.html
Copyright © 2011-2022 走看看