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

时间:2019-01-24 15:33:49

标签: java inheritance override

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

您没有对超类的返回值做任何事情。试试这个:

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";