コンストラクタの機能
メリット;クラスを使う側が楽になる。
コンストラクタがないと、
クラスを基にオブジェクトを生成して初期化するのに最低2行必要。下記は例。
Rectangle s3 = new Rectangle();
s3.setData(15,7);
コンストラクタがあると、1行で書ける。
Rectangle s3 = new Rectangle(15,7);
コンストラクタの構文
メソッドに似ているが、戻り値の型はない。メソッド名にあたる部分はクラス名と同じことが条件。
注意点
明示的にコンストラクタを作らなかった場合は、コンパイラが引数なしコンストラクタを自動追加する。
明示的にコンストラクタを作ると、引数なしのコンストラクタは自動的には作られない。
→場合に応じてデフォルトコンストラクタを作成する。
コンストラクタはオーバーロードできる。
カプセル化
より安全なクラスを作るため、カプセル化をする。
一般的にはフィールドにprivate修飾子を指定し、フィールドに直接アクセスできないようにする。
その代わり、値の設定や取り出しのためにセッター・ゲッター(アクセッサ―)をpublic指定で用意する。
thisキーワード
コンストラクタをつかう側が引数に何を入れるかわかるように、コンストラクタの引数名をフィールド名に合わせたい。
this.を使う。
public Day(int year, int month, int date){
this.year = year;
this.month = month;
this.date = date;
}
コンストラクタのオーバーロードをしている場合、
引数3つのコンストラクタでエラーチェックやフィールドへの代入をしている。
→引数2つのコンストラクタではthis()を使って引数3つのコンストラクタを呼び出すことができる。
Day(int year, int month){
this(year, month, 1);
}
エラーチェックやフィールドへの代入は一箇所で行うことができる。
クラス変数
インスタンスごとに変わるのではなく全体としての変数
インスタンス生成時にインクリメントすることで、累積数が表示できる。
コメント