私は、抽象メソッド(doSetup
)を持つ抽象クラス(Parent
)と、doSetup
メソッドを呼び出すメンバーメソッドを持っています。私が必要とするのは、子クラスが持つ可能性のある多くのコンストラクタにかかわらず、自動的にdoSetup
メソッドを呼び出す子クラス(実装するParent
)です。これを解決するのに役立つJavaのメカニズムやデザインパターンがありますか?すべての子コンストラクタで親メソッドの実行を自動的にインクルードする方法は?
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");
}
}
基本クラスのコンストラクタでdoSetup()メソッドを呼び出すだけです。 s。その後、特定のメソッドに基本クラスの機能を組み込む場合は、 'super.methodYouWishToCall()'だけを使用してください。 – ManoDestra
私が得ようとしているのは自動インクルージョンです。そのため、他の開発者が 'Parent'を実装すると、' doSetup'呼び出しをコンストラクタに含めることを忘れる機会はありません。 – yamori
私が言ったように、あなたのベースクラスのコンストラクタでそれを強制します。次に、サブクラスがインスタンス化されると、基本クラスのコンストラクターが呼び出され、そのメソッドが呼び出されます。私がここで何を意味するのか分からないなら、私はあなたの答えとしてそれを書くことができます。 – ManoDestra