我们已经了解了调用方法时候的查找规则, 先在子类中查找, 子类查找不到再去父类中查找.
如果父类的方法不满足子类的需求, 利用这个查找规则, 我们就可以在子类中添加一个与父类的一样的方法, 那么以后就会直接执行子类的方法, 而不会再去父类中查找.
这就叫方法的覆写.(override
)
如果在覆写的方法中, 子类还需要执行父类的方法, 则可以手动调用父类的方法:
父类名.方法(self, 参数...)
class Father:
def __init__(self, name):
self.name = name
def speak(self):
print("我是父类中的 speak 方法" + self.name)
# Son继承 Father 类
class Son(Father):
def __init__(self, name, age):
Father.__init__(self, name)
self.age = age
# 子类中覆写了父类的方法
def speak(self):
Father.speak(self)
print("我是子类的 speak 方法" + self.name + " 年龄:" + str(self.age))
s = Son("李四", 20)
s.speak()