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.