コンストラクタ


オブジェクトの初期化

new演算子でインスタンスを生成するときに少し触れましたが
インスタンスを生成するのはコンストラクタと呼ばれるクラス名と同じ特殊なメソッドです
コンストラクタはオブジェクトを作成して初期化する特殊メソッドなのです

何度も言いますが、コンストラクタメソッドはクラス名と同じ名前です
さらにコンストラクタはパラメータを持ちますが戻り値は返せないという特徴があります
なぜならば、コンストラクタが返すのは常にオブジェクトへの参照だからです

コンストラクタは宣言しなくともJavaコンパイラが自動的にパラメータの無いコンストラクタを自動生成します
だからこそ、前の章のサンプルでコンストラクタを宣言しなくとも、コンストラクタを使うことができたのです

しかし、コンストラクタを明示的に宣言することも可能です
いままではオブジェクトを生成後、作成したメソッド内でそれぞれのメンバ変数などを初期化していました
この行為は不用意にコードを長くするばかりか、オブジェクトとメンバの数では膨大な作業になりかねません
そこで、コンストラクタを用いてオブジェクト生成時にオブジェクトが持つメンバ変数などを初期化します
コンストラクタの宣言は、通常のメソッドの宣言とほとんど同じです(戻り値の型は指定しません)
class neko {
	String name;
	int love;

	void mes() {
		System.out.println(name + "\t\t" + love);
	}

	neko(String p_name , int p_love) {
		love = p_love;
		name = p_name;
	}
}

class test {
	public static void main(String args[]) {
		neko rena = new neko("レナ" , 186);
		neko yuki = new neko("ユキ" , 549);
		neko mimi = new neko("ミミ" , 325);

		System.out.println("名前\t\t好感度");
		rena.mes();
		yuki.mes();
		mimi.mes();
	}
}
nekoクラスのメンバneko()メソッドがコンストラクタです
neko()コンストラクタではメンバ変数 neko , love を初期化するためのパラメータを二つ受け取っていますね
これらをコンストラクタ内でメンバ変数に代入しています
こうすることで大幅に作業効率を上げることができますね



前のページへ戻る次のページへ