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

浙公网安备 33010602011771号