Java, вызов переопределенного метода неявно

Прямо сейчас в некотором коде Java у меня есть что-то вроде этого

class A {
 void f() {

 }
 A() {
  f();
 }
}

class B extends A{
 @Override
 void f() {
  //do some stuff
  super.f();
 }
}

class C extends B {
 @Override
 void f() {
  //do some stuff
  super.f();
 }
}

я хочу иметьf() вызывается и затем перебирает все родительские классы вверх, выполняя переопределенныеf(), Я делаю это по телефонуsuper.f() явно, хотя я бы не хотел этого делать.

Причина, по которой я это делаю, заключается в том, что постобработка выполняется после того, как конструктор в A достигнут. И в каждом классе есть состояние, которое должно быть надлежащим образом инициировано, поэтому у нас есть восходящий следf()«S.

Так что конструкторA действительно

A() {
  //init some state in a
  f(); //run f(), which will depend on the previous operation
}

Если я сделаю что-то вродеnew C(); я хочуC.f() позвонил, потомB.f() позвонил, потомA.f() называется

В любом случае, если есть более разумный способ сделать это, я открыт для этого.

Ответы на вопрос(3)

Ваш ответ на вопрос