Ich habe eine abstrakte Klasse (Parent
), die eine abstrakte Methode (doSetup
) hat, und eine Member-Methode, die die doSetup
Methode aufruft. Was ich brauche, ist die Kind-Klasse (die implementiert Parent
) bei der Konstruktion sollte automatisch die doSetup
-Methode aufrufen, unabhängig davon, wie viele Konstruktoren die Kind-Klasse haben könnte. Gibt es einen Java-Mechanismus oder ein Entwurfsmuster, das mir helfen könnte, dies zu lösen?Wie wird automatisch die Ausführung der Methode eines Elterns in allen Kindkonstruktoren eingeschlossen?
public abstract class Parent {
abstract protected void sayHi();
protected void doSetup() {
sayHi();
}
}
public class Child1 extends Parent {
@Override
protected void sayHi() {
System.out.println("hi");
}
public Child1() {
// Construction needs to automatically include exec of doSetup()
}
public Child1(String string) {
// Construction needs to automatically include exec of doSetup()
System.out.println("another constructor");
}
}
Rufen Sie einfach die doSetup() -Methode im Konstruktor Ihrer Basisklasse auf s. Und wenn Sie anschließend die Funktionalität der Basisklasse für eine bestimmte Methode verwenden möchten, verwenden Sie einfach 'super.methodYouWishToCall()'. – ManoDestra
Was ich versuche zu bekommen, ist die automatische Einfügung. Wenn andere Entwickler 'Parent' implementieren, haben sie nicht die Möglichkeit zu vergessen, den 'doSetup' Aufruf in ihre Konstruktoren aufzunehmen. – yamori
Wie gesagt, erzwinge das in den Konstruktoren deiner Basisklasse. Wenn dann alle Unterklassen instanziiert werden, muss der Konstruktor der Basisklasse aufgerufen werden, um den Aufruf dieser Methode zu erzwingen. Ich kann es als Antwort für dich aufschreiben, wenn du dir nicht sicher bist, was ich hier meine. – ManoDestra