コンストラクタの外出し

特に意味は無い

まぁソースを見てほしい

public class Hoge {
    public static void main(String[] args){
        Fuga fuga = new Fuga().init(3,"テスト");
        fuga.print();

        new Piyo().init(5,"みなさんおはよう").print();
    }
}

class Fuga {
    int num;
    String str;
    public Fuga init(int num,String str) {
        this.num = num;
        this.str = str;
        return this;
    }
    public void print() {
        for(int i=0; i<num; i++) {
            System.out.println(str);
        }
    }
}

class Piyo extends Fuga {
    @Override
    public void print() {
        for(int i=0; i<num; i++, System.out.println(str));
    }
}      

実行結果

% java Hoge
テスト
テスト
テスト
みなさんおはよう
みなさんおはよう
みなさんおはよう
みなさんおはよう
みなさんおはよう

はっきり言って継承したときにコンストラクタを書かなくて済むくらいしかメリットは無いような気がする・・・