superの呼び出しが必要な場合の継承
androidでactivityの孫クラスを作ってハマリました.
onCreateをオーバライドしたかったのですが、onCreateではsuper.onCreateしなければならなりません.
孫クラスでやってしまうと当然子クラスのonCreateが呼ばれてしまい、子クラス特有の処理も実行されてしまいます.
Javaではsuper.superはないようです.
そこで固有の処理を別メソッドonCreateLocalにして
public void onCreate(Bundle bundle) { super.onCreate(bundle); onCreateLocal(); }
ってすると、孫クラスでは自分のonCreateLocalが2回呼ばれてしまいます.
ということで孫クラスでは
public void onCreate(Bundle bundle) { super.onCreate(bundle); }
とすると1回で済むようになりました.曾孫クラスとその子孫でははなんとなくonCreateLocalをオーバライドすれば良いはずです.済んでみれば当たり前ですが、はまってオーバライドの挙動を確認するサンプルを実装しました.