■コンストラクタ
はじめに
この章では、コンストラクタについて学んでいきましょう!
javaにおいてもっとも基本的な構造になります。
コーディングしていく上で コンストラクタ が重要なポイントになるので、しっかりおさえていきましょう。
Step1 : コンストラクタとは
コンストラクタ は、インスタンスを生成するタイミングで呼び出される、 特別なメソッドです。
呼び出されたコンストラクタ内では、さまざまな処理を行うことができます。
また、コンストラクタは、 引数 を持つことが可能です。
この引数を使用して何らかの処理を行うことも可能です。
(※引数についての詳細は次章の メソッド にて説明します。
通常はコンストラクタ内で、
フィールド変数などにデフォルト値でない任意の値を格納する処理(初期化処理)を記述することが多いです。
また、クラスを使用する際に 習慣化したい処理がある場合 などにも利用します。
引数なしの場合
// ConstructorSample.java class ConstructorSample { String str = "Blue Engineer"; // コンストラクタ public ConstructorSample() { System.out.println(str); } } // Main.java public class Main { public static void main(String[] args) { // インスタンスの生成 ConstructorSample cs = new ConstructorSample(); } }
【出力結果】
Blue Engineer
引数ありの場合
// ConstructorSample.java class ConstructorSample { String str = "Blue Engineer"; // コンストラクタ public ConstructorSample(String str) { System.out.println(str); } } // Main.java public class Main { public static void main(String[] args) { //インスタンスの生成 ConstructorSample cs = new ConstructorSample("Blue System Engineer "); } }
【出力結果】
Blue System Engineer
Step2 : コンストラクタの記述
記述方法を詳細に見ていきます!
以下の画像は 社員情報を扱うようなクラス のコンストラクタのサンプルになります。
社員の情報 ってどんな内容が必要かな?ということをイメージして見ていきましょう!
①アクセス修飾子(省略可)
②コンストラクタ名
③丸括弧内に引数の型
④引数名
の順で記述し、 ブロック( { }
)で囲むようにして 実際の処理を記述します。
コンストラクタ名については、必ず クラス名と同名にする という決まりがあります。
また、通常のメソッドと異なり、 コンストラクタには戻り値がありません。
クラスに コンストラクタ を実装することで、
そのクラス内に存在するフィールド変数への値の設定を一括で行うことができるため、
インスタンス生成後は持つべき情報が詰まったクラスが使用可能となります。
例えば以下のような情報を持つでしょう。
- 社員番号
- 所属部署
- 名前
- 電話番号
- メールアドレス
…etc
仮にこれらの情報が すべて必須であるならば、
いちいちインスタンスを生成してからセットするのではなく、
以下のようにして インスタンス生成時に一括で値をセットする 方が賢い書き方になります。
コンストラクタ: ありの場合の値のセット方法
/* * コンストラクタ */ public EmployeeBean(String empId, String department, String name, String tel, String mailAddress) { this._empId = empId; this._department = department; this._name = name; this._tel = tel; this._mailAddress = mailAddress; } ... // 呼び出し(new した後で、引数へ与えられた値を元に EmployeeBean が生成されます) EmployeeBean employeeBean = new EmployeeBean("00000", "技術部", "コンストラクタ", "XXX-XXXX-XXXX", "java@ぶるー"); // 使用時 System.out.println(employeeBean.getName());
※フィールド変数と引数との書き分けを行っているだけですので、
フィールド変数に _(アンダースコア)
があるのは気にしなくて結構です。
コンストラクタ: なしの場合の値のセット方法
EmployeeBean employeeBean = new EmployeeBean(); employeeBean.setEmpId("00000"); employeeBean.setDepartment("技術部"); employeeBean.setName("コンストラクタなし"); employeeBean.setTel("YYY-YYYY-YYYY"); employeeBean.setMailAddress("java@ぶるー"); // 使用時 System.out.println(employeeBean.getEmpId());
対象となる情報も多くはなく、 setXXX
で記述すること自体そこまで手間に感じない方もいるかと思いますが、
使用するシチュエーションによっては、事前にコンストラクタを用意したクラスの方が使い勝手がよいケースもあります。
一概に、コンストラクタを使用することが正解!とは言いいませんが、
書き方と使い方はしっかり押さえておきましょう!