初期化ブロックとは
初期化ブロックはクラス内に定義するエリアで、
ここに定義した処理はコンストラクタよりも先に実行されます。
クラス内に複数のコンストラクタを定義する時に、
コンストラクタ間で共通の処理を行いたい時に便利です。
初期化ブロック構文
クラス内に波カッコ「{}」で囲んだエリアが初期化ブロックになります。
- (初期化ブロック構文)
- { //処理 }
- 1つのクラス内に初期化ブロックを複数定義することも可能です。
- 初期化ブロックはクラス内のどこに定義してもOKです。
初期化ブロックサンプル
初期化ブロックを使用したサンプルです。
- (例)初期化ブロックサンプル
-
public class Sample { //メンバ変数 int a; //コンストラクタ1 public Sample(){ } //コンストラクタ2 public Sample(int value){ this.a = this.a * value; } //初期化ブロック { this.a = 99; } }
上記Sampleクラスを引数なしでnewするとメンバ変数aは99になりますが、
引数ありでnewするとメンバ変数aは、a*引数で指定された値になります。
まとめ
- コンストラクタの実行よりも先に実行される
- コンストラクタをオーバーロードした時に、共通的な処理を記述できる
- 波括弧「{}」で囲ったエリアが初期化ブロックになる
- 初期化ブロックは複数記述可能。
(その場合は上から順に実行されます。)
コメント