繁体   English   中英

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

[英]how can I add additional implementation to an overriding subclass method while still calling superclass method

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

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

您已经丢失了 super 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";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM