JavaScript子类调用父类同名函数:先执行子类代码再执行父类逻辑
嘿,这个需求其实挺常见的,咱们只要在子类的同名方法里先跑完自己的自定义代码,再主动调用父类的对应方法就能实现啦!我给你拿几种主流的面向对象语言举例子,一看就懂:
具体实现示例
JavaScript 场景
假设你有个基础父类 BaseClass,里面有个负责核心功能的 doSomething 方法:
class BaseClass { doSomething() { console.log("执行父类的基础doSomething逻辑"); } }
子类 ChildClass 继承它之后,想要先执行自己的定制逻辑,再触发父类的基础功能,只需要在子类的 doSomething 里先写自己的代码,然后用 super.doSomething() 调用父类方法就行:
class ChildClass extends BaseClass { doSomething() { // 第一步:执行子类的自定义代码 console.log("执行子类专属的doSomething定制逻辑"); // 第二步:调用父类的同名方法 super.doSomething(); } } // 测试效果 const childInstance = new ChildClass(); childInstance.doSomething(); // 输出顺序会是: // 执行子类专属的doSomething定制逻辑 // 执行父类的基础doSomething逻辑
Java 场景
Java里的逻辑完全一致,用 super 关键字就能调用父类的方法:
// 父类定义 class BaseClass { public void doSomething() { System.out.println("执行父类的基础doSomething逻辑"); } } // 子类实现 class ChildClass extends BaseClass { @Override public void doSomething() { // 先跑子类自己的逻辑 System.out.println("执行子类专属的doSomething定制逻辑"); // 再调用父类方法 super.doSomething(); } } // 测试类 public class TestDemo { public static void main(String[] args) { ChildClass child = new ChildClass(); child.doSomething(); // 输出顺序和JS完全一样 } }
几个关键提醒
- 核心逻辑就是主动调用父类方法,而且一定要把这步放在子类自定义代码的后面,才能保证执行顺序符合你的要求。
- 注意父类方法的访问权限:比如Java里如果父类方法是
private,子类就没法直接调用,得改成protected或者public才行。 - 如果父类方法需要传参数,调用
super.方法名()的时候记得把对应参数传进去,别漏了!
内容的提问来源于stack exchange,提问作者Mateus Koppe
相关产品推荐
相关产品推荐

