次のクラスを検討してください
class A{
public void init(){
//do this first;
}
public void atEnd(){
//do this after init of base class ends
}
}
class B1 extends A{
@Override
public void init()
{
super.init();
//do new stuff.
//I do not want to call atEnd() method here...
}
}
すでに開発されているB1、B2、...Bnの子クラスがいくつかあります。それらはすべてクラスAを拡張します。それらすべてに新しい機能を追加したい場合は、クラスA内のメソッドでそれを定義するのが最適です。ただし、メソッドは常に直前に自動的に呼び出される必要があります。子クラスのinit()メソッドは終了します。これを行う基本的な方法の1つは、子クラスのinit()メソッドの最後にatEnd()メソッド呼び出しを再度追加することです。しかし、これを賢く行う他の方法はありますか?