как я могу добавить дополнительную реализацию в переопределяющий метод подкласса, все еще вызывая метод суперкласса - PullRequest
0 голосов
/ 24 января 2019

Я хотел бы добавить дополнительную реализацию в переопределяющий метод подкласса, не переопределяя полностью суперклассовую.Это то, что я дошел до сих пор, но это не похоже на работу.Я хотел бы, чтобы вывод был "возвращением суперкласса", за которым следовал "возврат подкласса".Вот код:

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 голосов
/ 24 января 2019

Вы ничего не делаете с возвращаемым значением суперкласса.Попробуйте это:

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";
0 голосов
/ 24 января 2019

Вы потеряли возвращаемое значение метода super send(), поэтому вы не можете увидеть его в выводе. Чтобы увидеть оба варианта, вам нужно изменить дочернюю реализацию на что-то вроде этого:

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