Super.methode() immer ausführen

Hallo, ich habe hier ein paar Klassen, die von einer gemeinsamen Klasse abgeleitet wurden.

Dabei habe ich eine Methode doStartTag() in den Klassen und auch in der Superklasse ist doStartTag() implementiert.

Kann ich es irgendwie hinkriegen, dass der mir dieses doStartTag() in der Basisklasse immer ausführt oder muss ich aus der überladenen Funktion super.doStartTag() aufrufen.

Wenn man dies nämlich nicht tut, dann wird das später ein Problem geben (beim Session Timeout)… und ich weiss nicht ob ich und die anderen Entwickler da immer dran denken werden.

Vielleicht gibts auch ne ganz andere Möglichkeit?

Kann ich es irgendwie hinkriegen, dass der mir dieses
doStartTag() in der Basisklasse immer ausführt oder muss ich
aus der überladenen Funktion super.doStartTag() aufrufen.

AFAIK mußt du super.doStartTag() aus der überladenen Funktion aufrufen.

Mir fällt auch sonst nichts ein wie du implizit eine Methode der Basisklasse aufrufen könntest, auch der Konstruktor der Basisklasse muss explizit vom Konstruktor der abgeleiteten Klasse aufgerufen werden.

Du könntest dir aber überlegen ob dein Code irgendwann die Gelegenheit hat die Klasse von außerhalb zu initialisieren, also dann einfach die Methode in der Basisklasse anders benennen und von aussen aufrufen.

Grüße, Robert

Servus,

wenn die Methode immer überschrieben werden soll, kannst du den Umweg über eine zweite abstrakte Methode gehen.

void doStartTag() {
 super.doStartTag();
 doAfterStartTag();
}

abstract void doAfterStartTag();

Dirk