重写父类方法是子类定义同名方法以覆盖调用路径,不修改父类原型;需显式调用super或Parent.prototype复用父逻辑,常见于前置校验、后置处理与条件分支。

重写父类方法是 JavaScript 继承中实现行为定制的核心手段,关键在于“覆盖同名方法 + 按需复用父逻辑”,而不是删除或破坏原有功能。
重写发生在子类定义时,不影响父类本身
子类中声明同名方法即完成重写。父类原型上的原始方法依然完好,可随时被调用或供其他子类使用。
- 重写只改变子类实例的调用路径,不修改父类原型
- 父类方法仍可通过 Animal.prototype.sound() 直接访问
- 多个子类可各自重写同一方法,互不干扰
重写后想复用父类逻辑?必须显式调用
不能靠自动继承,必须主动触发父版本。方式取决于语法风格:
在调试 Java 后端 API 故障时使用此技能,尤其适用于以下任务:分析日志、跨 Controller、Service 和 Mapper 层追踪请求、定位异常根因、检查 SQL 执行或参数流转,以及生成简洁的诊断结论与修复方案。
- class / extends 写法:在子类方法内用 super.methodName()
- 原型链写法:用 Parent.prototype.methodName.call(this, ...args)
- 注意:super 只能在 class 方法体内使用,且 constructor 中必须先调用 super()
重写常配合参数扩展或逻辑增强
典型场景不是完全替换,而是“在父行为基础上加点东西”:
- 前置校验:重写方法开头检查参数,不满足则提前返回
- 后置处理:调用 super.xxx() 后再执行日志、状态更新等
- 条件分支:根据 this 的状态决定是否走父逻辑,或走自定义分支
避免常见陷阱
重写看似简单,但容易踩坑:
- 忘记调用 super()(class 中)→ 报错 ReferenceError: Must call super constructor
- 在子类构造函数里访问 this 前没调 super() → this 不可用
- 用 this.methodName() 代替 super.methodName() → 造成无限递归
- 误以为重写 = 删除父方法 → 实际父方法仍在,只是被遮蔽
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










