コンニチハ。ちょっと長くなりますが・・・・
chapter14 クラスの基本形 まとめ 前編
オブジェクトの設計図がクラスでした。
しかし、フィールド変数とメソッド書けばいいなんてことではありません。
で、まずはコンストラクタについて
1.コンストラクタ
オブジェクトを作成した直後は数値フィールドの値は0になっています。
String型ではnullで、(オブジェクト初期化の既定値)。
で、今回出てくる
コンストラクタ
オブジェクトを作成するときに同時に初期値も指定しなくてはならない仕組み
です。
①簡単なコンストラクタ
前の章で
Dice dice= new Dice();
dice.val=6;
がありました。
この中の Dice()の部分をコンストラクタといい、Javaコンパイラが自動生成するコンストラクタで、何もしないコンストラクタです。
もちろんなにもしてくれないので二行目のようにdice.val=6とプログラムで設定しなければいけません。
このコンストラクタは自動的に作られるので デフォルトコンストラクタ といいます。
大事なことはこのように初期値を設定しないとコンパイルエラーとなります。
コンストラクターの説明と使い方をやっていこうと思います。
青枠の部分がコンストラクタですが、コンストラクタはクラスの中に書きます。
引数numが初期値としてセットしたい値です。処理内容は単純です。
numをフィールド変数valに代入するだけです。
では、実際にコンストラクタを起動できるプログラムを作っていきます。
package exercise;
public class Sample_sample2 {
public static void main(String[] args) {
Dice dice = new Dice(6);
System.out.println("目数="+dice.val);// ここにコードを挿入
}
}
これがそのプログラムですが起動する前にもう一つ
コンストラクタに引数を指定しないで作ろうとするとどうなるかを先に見てみます。
この様にエラーになってしまいます。
では、エラー
にならないほうを起動してみますwww
この様になるわけです。
POINT
★コンストラクタも書き方
ポイント①
名前はクラス名と同じでなければいけない。
ポイント②
戻り値型はない(voidも書くことができない)
ポイント③
return文は書けない
コンストラクタはクラスの中に書きますがクラスメンバでないことに注意してください。よってオブジェクトを作ったとき、オブジェクトの中にも含まれません。
コンストラクタはクラスメンバでない
thisの利用
コンストラクタの引数にも推奨された書き方があります。
引数の名前を対応するフィールド変数と同じにすることです。
このことにより、引数とフィールド変数の対応が明確になります。
ただ、単に同じでもうまくいかない場合があります。
int val; //フィールド変数
public Dice (int val) { //引数をフィールド変数と同じ名前に
val = val; <---------------区別がつかない!!!
}
なのでこの場合は、キーワードthisを使い次のように書き換えます。
thisはjavaが持つシステム変数で、オブジェクト自信を指す。
point
this=このオブジェクト(オブジェクト自身を指す)
ここまでご覧いただきありがとうございました。
BY マんタ
参考書は__________________________________
川場 隆 Kawaba Takashi
秀和システム