首页 > 解决方案 > 如何在仍然调用超类方法的同时向覆盖的子类方法添加额外的实现

问题描述

我想在不完全覆盖超类方法的情况下向覆盖子类方法添加额外的实现。这是我到目前为止所做的,但它似乎不起作用。我希望输出是“超类返回”,然后是“子类返回”。这是代码:

public class A {
  public String send() {
    return "superclass return";
  }
}

public class B extends A{
  public String send() {
    super.send();
    return "subclass return";
  }
}

public class Driver {
  public static void main(String[] args) {
    B b = new B();
    System.out.println(b.send());
  }
}

输出:subclass return

我使用了错误的语法super.send()吗?预期的输出应该是:

superclass return
subclass return

标签: javainheritanceoverriding

解决方案


您丢失了 supersend()方法的返回值,这就是您在输出中看不到它的原因。为了能够同时看到两者,您需要将子实现修改为如下所示:

public String send() {
   String value = super.send();
   return value + "subclass return";
}

推荐阅读