一、引入
我们知道一个子类如果继承了父类,那么当通过子类对象去调用一个方法时,如果子类对象中没有此方法,那么就会到继承的父类中查询,如果查询到有则进行调用
但是
有时,我们发现子类继承的父类的方法不能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%满足要求,但你并不能保证其它继承这个父类的子类也需要同样的功能,所以在以后的开发工作中,一个父类定义好了之后,就不要轻易的修改,否则继承它的子类都要进行修改,这个工作量是非常大的,请不要这么做