Java演習05〜クラスを理解する コンストラクタ編
本記事は、クラスの構成要素の一つであるコンストラクタについて説明しています。
少し難しい話になりますが、なるべくわかりやすく説明しています。
ぜひ最後まで、頑張ってください!
インスタグラムの演習解答をすぐにご覧になりたい方は、こちらをクリック!
クラスの具体例
今回使用するクラスを以下に示しておきます。
後述のリンクからお越しの方は、ブラウザバックをすれば、
先ほど読んでいたところまで戻ることができます!
コンストラクタ
コンストラクタとは、設計図(クラス)を組み立てる時に実行するもので、
もらった情報をフィールド(状態や性質)に取り込む。
これがコンストラクタの役割です。
「底辺と高さを設計図に落とし込む」
これがコンストラクタのお仕事内容となります。
作業工程を順番に見ていきましょう!
設計図を組み立てる
クラス名 モノの名前 = new コンストラクタ名(与える情報);
これで設計図と与える情報を元にモノ(今回は三角形)が組み立てられます。
27行目が実際のコードになります。
クラス名は、作りたいモノの設計図(クラス)の名前です。
モノの名前は、変数と同様に自分で決めます。
大きい三角形を作る際には、「biggerTriangle」などとすることができます。
「new」キーワードの後ろに、コンストラクタ名(与える情報)とします。
今回は、底辺(width)が5、高さ(height)が3の三角形を作るので、
与える情報はの中身は (5.0, 3.0) となります。
設計図を組み立てた際に、実行されるのがコンストラクタです。
プログラム6〜9行目が実際のコンストラクタです。
コンストラクタの定義方法
修飾子 コンストラクタ名 (もらいたい情報){
本体
}
これがコンストラクタの定義方法です。
修飾子は、クラスの定義と同様「public」としてください。
詳しくは後々詳しく学んでいきます!
コンストラクタ名とクラス名は同一である必要があります!
今回は三角形の底辺と高さが欲しいので、もらいたい情報の中身は、
(double width, double height)となります。
先ほど与える情報で、底辺5・高さ3と指定したので、
6行目のwidthには5、heightには3が代入されています。
もらった情報を取り込む
現在の状況は、
- 設計図を組み立てた
- 底辺5・高さ3と指定した
- 底辺5・高さ3を受け取った
となっています。
ですが、このままでは底辺と高さを使えません。
値を受け取っただけで、設計図に落とし込んでいないからです。
イメージ的には、「頭に想像しているだけ」と言った感じです。
実際に想像しているものを、実体化しないと意味ないですよね。
それでは、実際にもらった情報をコンストラクタ内で取り込んでみましょう!
this.フィールド名 = もらった情報;
こうすることで、設計図に値を落とし込むことができます。
7、8行目が具体的なソースコードです。
ここまでで、設計図と与えられた情報をもとに、三角形を作成することができました。
ここから作った三角形で、
面積を求めたり、三角形のステータスを表示させたりするわけです。
点数管理システム
前回は、点数管理システムのフィールドを宣言しました。
今回は、この点数管理システムを組み立ててみましょう!
準備として、前々回などで使用したおまじない
public static void main(String args[]) { }
をフィールドの下に書いておきましょう!
それでは、先ほど説明した作業工程の順番にプログラムしていきましょう!
点数管理システムに点数を与える
おまじないの中で、点数管理システムに点数を与えましょう!
言い換えれば「設計図を組み立てる」ですね!
今回の点数は、
- 国語 60
- 数学 79
- 理科 51
- 社会 91
- 英語 85
としましょう!
モノの名前は、「score」と指定して、点数管理システムを組み立てましょう!
コンストラクタが未定義なので、正しく記述できていても、赤線が引かれます。
実際は、コンストラクタから定義するからです。
ですが今回はわかりやすいように、現実世界の順番で書いています。
クラスの具体例を参考にして、書いてみましょう。
それでは解答です。
今回の設計図(クラスは)Scoreです。
「new」のキーワードをしっかりとつけて記述できていますか?
コンストラクタを定義して、もらった情報を落とし込む
コンストラクタを定義し与えられた情報をもとに点数管理システムを作りましょう。
もらいたい情報は、整数型の各教科の点数です。
上記で与えた順番で、記述してくださいね。
順番がチグハグだと、「国語に数学の点数が入る」などバグが発生します。
「国語、数学、理科、社会、英語」この順番で、もらいたい情報を書きましょう!
そしてもらった情報を点数管理システムに落とし込む。
ここまでやりましょう!
少し難しいかもしれませんが、コンストラクタの定義方法などを読み返して、
考えてみてください!
それでは解答です。
いかがでしたか?
修飾子はpublic、コンストラクタ名はクラス名と同一になっていますか?
今回もらいたい情報は、整数型の各点数。
それをしっかりと落とし込めていますか?
これが正しく動くと、点数管理システムに各点数が管理されるというわけです。
間違えた方は、この記事を一から読み直しです!!
まとめ
今回は、クラスの構成要素のコンストラクタについて説明しました。
少しイメージしにくい内容だったかもしれません。
何度も読み返して、理解を深めてもらえたら幸いです。
設計図を作成して、組み立てる。
このイメージを頭に入れておいてくださいね!
お疲れ様でした。