Java, invoca implícitamente el método anulado

Ahora mismo en algún código Java tengo algo como esto

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();
 }
}

quiero tenerf() llama y luego itera hacia arriba a través de cada clase padre, ejecutando elf(). Hago esto llamandosuper.f() explícitamente, aunque me gustaría no tener que hacer esto.

La razón por la que hago esto es que hay un procesamiento posterior que debe realizarse después de que se alcance el constructor en A. Y hay un estado en cada clase que debe iniciarse correctamente, por lo que tenemos el rastro ascendente def()'s.

Así que el constructor deA realmente es

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

Si hago algo comonew C(); quieroC.f() llamado, entoncesB.f() llamado, entoncesA.f() llamado

De todos modos, si hay una forma más inteligente de hacerlo, estoy abierto a ello.

Respuestas a la pregunta(3)

Su respuesta a la pregunta