更新时间:2022-08-03 来源:黑马程序员 浏览量:
在继承关系中,子类会自动拥有父类定义的方法,但是有时子类想要按照自己的方式实现方法,即对父类中继承来的方法进行重写,使得子类中的方法覆盖掉跟父类同名的方法。需要注意的是,在子类中重写的方法要和父类被重写的方法具有相同的方法名和参数列表。
例如,不同国家的人,打招呼的方式是不同的,中国人打招呼的方式是“吃了吗?”,美国人打招呼的方式是“Hello”。Person类中定义了一个打招呼的方法say_hello方法进行重写。接下来,通过一个案例来模拟上述场景,如例12-5所示。
例12-5 重写父类的方法.py
# 定义表示人的类 class Person(object): # 打招呼的方法 def say_hello(self): print("--Hello--") # 定义Chinese类继承自Person类 class Chinese(Person): # 中国人打招呼的方法 def say_hello(self): print("吃了吗?") # 创建Chinese类的对象 chinese = Chinese() chinese.say_hello()
在例12-5中,首先定义了Person类,该类中有一个say_hello方法,然后定义了Person类的子类Chinses,该类重写了从父类继承的say_hello方法,最后创建Chinese类的对象chinese,调用say_hello方法。
程序运行的结果如图12-10所示。
图12-10 运行的结果
从程序输出的结果可以看出,Chinese类对象调用的是重写的say_hello方法,而不是父类的say_hello方法。