如何在仍调用超类方法的同时向覆盖子类方法添加其他实现



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

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

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

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

您没有对超类的返回值执行任何操作。 试试这个:

public class A {
  public String send() {
    return "superclass return";
  }
}
public class B extends A{
  public String send() {
    return super.send() + "subclass return";
  }
}
public class Driver {
  public static void main(String[] args) {
    B b = new B();
    System.out.println(b.send());
  }
}

或者,如果您想要换行符:

return super.send() + "nsubclass return";

最新更新