更新时间: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方法。
AI鸿蒙原生智能正式版课程,培养全端跨平台鸿蒙工程师
2026-03-10AI鸿蒙原生智能正式版课程,培养全端跨平台鸿蒙工程师
2026-03-10毕业16个工作日,平均薪资13180元,就业率100%,广州黑马AI智能应用开发(Java)学科20250529班
2026-03-06毕业32个工作日,平均薪资11147元,就业率95%,广州黑马AI智能应用开发(Java)学科20250326班
2026-03-05黑马程序员2025全国就业数据发布:全学科平均就业率92.07%,AI开发类就业平均薪资达11869.67元。
2026-03-05黑马全国校区齐开班!场面太太太壮观了!
2026-03-03