子类扩展父类方法需用super实现逻辑叠加而非替换:构造函数中必须先调用super()初始化父类实例才能使用this;同名方法内通过super.方法名()复用父类逻辑,支持前置处理→父类逻辑→后置处理三段式增强;静态方法和getter/setter中super同样适用。

在子类中扩展父类方法,关键不是替换而是增强——保留父类逻辑的基础上添加新行为。这靠 super 实现,不是重写,是叠加。
必须先调用 super() 才能用 this
子类构造函数里不写 super(),直接访问 this 会报错。因为父类实例初始化没完成,this 还不能用。
- 错误写法:constructor(name) { this.name = name; }(缺少 super)
- 正确写法:constructor(name) { super(); this.name = name; }
- 如果父类构造函数需要参数,比如 super(name),子类也得传对应值
用 super.方法名() 复用父类逻辑
在子类同名方法内部,调用 super.方法名() 就能执行父类原始实现,再在其前后加自己的代码。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 它不是 this.方法名(),否则会无限递归
- 父类方法里的 this 指向仍是当前子类实例,所以属性访问自然生效
- 可以只取返回值、拼接字符串、做条件判断后再返回
典型扩展模式:前置处理 → 父类逻辑 → 后置处理
比如日志记录、参数校验、结果包装等场景,都适合这种三段式结构。
- 父类有 speak() 返回字符串,子类可先打印“准备发声”,再 super.speak(),最后加个感叹号
- 父类 save() 提交数据,子类可在调用前校验字段,调用后清空表单
- 不一定要完整保留父类返回值,也可以只执行它,然后返回新内容
静态方法和 getter/setter 同样适用
super 不限于实例方法。静态方法中 super 指向父类构造函数;getter/setter 里也能用 super.属性名 访问父级定义。
- 静态方法:static create() { console.log('before'); return super.create(); }
- getter:get fullName() { return super.fullName + ' (verified)'; }
- 注意:不能在静态方法里访问 this 实例属性,那是两个作用域
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










