コンストラクタとは?

インスタンスが生成されるときに自動で実行される特殊なメソッドで

インスタンスの初期状態を自由に操ることが出来る!

と、言ってもピンとこないし実際にコードを実行してみよう。


コンストラクタがないとどうなる?

型ごとのデフォルトが値に入る

たとえば、顧客情報を引き出すプログラムがあったとする。

    //顧客情報を定義

class CustomerCard {
int id; //顧客id
String name; // 顧客名
}

class CustomerManager {
public static void main(String[] args) {
CustomerCard out = new CustomerCard(); //インスタンス作成
System.out.println(out.id); //顧客idを出力
System.out.println(out.name); //顧客名を出力
}
}

これを実行すると、結果は以下の通りだ。

0 //顧客id

null //顧客名


なぜこうなるか

クラスをインスタンス化(new)した時に、何の値も入れられていないメンバ変数は、勝手に初期化されるようになっているから。

intなどの数値系の型は0に、boolean型はfalseに、Stringのような参照型はnullに初期化されるというルールがあることを憶えておこう。


コンストラクタを入れてみる

さっきのプログラムにコンストラクタを入れて初期状態を設定して実行してみよう。

    class CustomerCard {

int id; //顧客id
String name; // 顧客名

//**コンストラクタで初期値を設定**
CustomerCard() {
this.id = 1111;
this.name = "taylor";
}
}

class CustomerManager {
public static void main(String[] args) {
CustomerCard out = new CustomerCard(); //インスタンス作成
System.out.println(out.id); //顧客idを出力
System.out.println(out.name); //顧客名を出力
}
}

結果はこうなった。

1111 //顧客id

taylor //顧客名

うん、いい感じにコンストラクタで指定した値が初期値になった。

こんな感じでインスタンスの初期値を設定できるのがコンストラクタってのをざっくり理解しておけるといいかも。