首页 新闻 会员 周边 捐助

super().原方法(),从而把父类的逻辑拿过来继续用,实现真正的“扩展”而不是“覆盖掉”

0
[已关闭问题] 关闭于 2025-09-13 17:58
“扩展” vs “覆盖” 用两段代码一看就懂:
  1. 直接覆盖(不用 super)——父类逻辑全被扔掉
class Parent:
    def work(self):
        print("父类:通用步骤")

class Child(Parent):
    def work(self):          # 完全重写,父类那句不执行
        print("子类:我只干自己的")
        
c = Child()
c.work()      # 输出只有:子类:我只干自己的
 
  1. super 扩展——父类逻辑先跑,子类再“加料”
class Child(Parent):
    def work(self):
        super().work()       # 先复用父类通用步骤
        print("子类:再干点额外的")   # 然后再扩展新功能
        
c = Child()
c.work()
# 输出:
# 父类:通用步骤
# 子类:再干点额外的
 
这就是“真正的扩展”:
父类代码继续生效,子类只在后面或前面添新料,而不是把父类实现完全踩掉。
_java_python的主页 _java_python | 小虾三级 | 园豆:984
提问于:2025-09-13 17:58
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册