=== コンストラクタ === 属性(の集まり)がインスタンスの型紙として使われました。 属性の宣言は変数の宣言と同じ書き方をしますが、ここに変数が取られるわけではありません。 {{{#!java public class Card { String suit; int rank; public static void main(String[] args) { Card a; a = new Card(); a.suit = "ハート"; a.rank = 12; } } }}} この例では new Crad() が行われるとインスタンス(そのクラスのオブジェクト)が作られ、 a.suit、a.rankによって、そのインスタンスの属性にアクセスすることができました。 インスタンスを生成するときに使われる Card() のことをコンストラクタと言います。 * コンストラクタはクラスと同じ名前です。 * コンストラクタを呼び出すときは前に new をつけます。 * コンストラクタが呼び出されるとインスタンスが作成されます。 === コンストラクタの定義 === コンストラクタは定義しなくてもかまいません。 インスタンス作成時になんらかの処理をしたいときには、 コンストラクタを定義して記述します。 * コンストラクタには戻り値を指定できません。 {{{#!java public class Card { String suit; int rank; Card() { System.out.println("Cardインスタンスを作成しました"); } public static void main(String[] args) { Card a; a = new Card(); a.suit = "ハート"; a.rank = 12; } } }}} この例では new Card() が呼び出されるとインスタンスが作成され、 「Cardインスタンスを作成しました」と表示されます。 === オーバーロード === 引数をとるコンストラクタを定義することもできます。 引数の型や引数の個数が異なればいくつコンストラクタを定義してもよい。 {{{#!java public class Card { String suit; int rank; Card(String s, int r) { suit = s; rank = r; } public static void main(String[] args) { Card a; a = new Card("ハート", 12); } } }}} インスタンスを作成すると同時に、インスタンス変数に値を代入するコンストラクタの例です。 値はコンストラクタの引数として与えています。 コンストラクタ内で使われている suit, rank の2つの名前は、 今作成したインスタンスの中の変数のことです。