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%满足要求,但你并不能保证其它继承这个父类的子类也需要同样的功能,所以在以后的开发工作中,一个父类定义好了之后,就不要轻易的修改,否则继承它的子类都要进行修改,这个工作量是非常大的,请不要这么做

原文地址:https://www.cnblogs.com/dong4716138/p/15751652.html