Ich möchte die Super-Methode einer geerbten Klasse ändern. Ich habe etwas in der Art:Change vererbte Super-Methode
class A {
public void method() {
// Do something here
...
}
}
class B extends A {
@Override
public void method() {
// Do something here
...
super.method();
}
}
class C extends B {
@Override
public void method() {
if(useB()) {
// Use B's method
super.method();
} else {
// Use A's method
super.super.method();
}
}
}
Wie Sie sehen können, muss ich manchmal A's Methode und manchmal die B's verwenden. Wie soll ich das dann machen?
Ich denke, die kurze Antwort wäre: Sie sollten nicht. Sie sollten über Ihre Struktur nachdenken und versuchen, dies ohne die a -> b -> c Struktur zu lösen. Denke über dein Design nach und warum dies passiert ist. Die Tatsache, dass dieses "Problem" hier ist, wird als "Code-Geruch" bezeichnet und bedeutet, dass etwas wahrscheinlich ausgeschaltet ist – Nanne