methaneのブログ

このブログに乗せているサンプルコードはすべてNYSLです。

コンストラクタからサブクラスのオブジェクトメソッド呼び出し

http://d.hatena.ne.jp/calotocen/20051102
むしろ、このコードを読んで驚いたのが、ImplementedClassのtoString()をAbstractのコンストラクタから読んでること。
でも、C++でも、コンストラクタをオーバーロードするときに部分初期化用のprivateメンバを呼ぶことはよくあるわけで、それのTemplateMethodパターンとしてはアリかもしれない。


class Base {
public Base(){
// Base初期化前半.
partialInit();
// Base初期化後半.
}

protected void partialInit(){
// 必要だったら何かする.
}
}

class Derived extends Base {
public Derived(){
super();
}

protected void partialInit(){
// Base初期化中にやりたいこと.
}
}

これを使ったらうれしい例がまったく思いつかないけど。
Baseのコンストラクタに引数渡しで良いやん。