コンストラクタ(Constructor)

コンストラクタとは

コンストラクタは、オブジェクトが生成される時に必ず呼び出される特殊なメソッドです。
コンストラクタには通常、オブジェクトの初期化処理を記述します。

1つのクラスには引き数が異なる複数のコンストラクタを定義することができ、1つ以上のコンストラクタが必須です。
但し、コンストラクタを1つも定義しなかった場合は、処理が何も無いコンストラクタが暗黙的に定義されるので、初期化処理が不要の場合は省略することができます。

コンストラクタ構文

コンストラクタの構文は以下の通りです。

[修飾子] コンストラクタ名([型 変数名[…]]){ //処理 }
項目解説
修飾子このコンストラクタを参照できる範囲を指定します。
コンストラクタ名クラス名と全く同じにする必要があります。
引数コンストラクタに渡すパラメータを型と変数名のセットで指定します。複数指定する場合はカンマで区切って指定します。引数が不要な場合は未指定(カッコのみ)でOKです。

コンストラクタサンプル

(ConstructorSample.java)

public class ConstructorSample {

  //フィールド
  public String str = null;

  // コンストラクタ1
  private ConstructorSample(){
    System.out.println("コンストラクタ1が呼ばれました");
  }

  // コンストラクタ2
  public ConstructorSample(String str){
    System.out.println("コンストラクタ2が呼ばれました");
    this.str = str;
  }

}
(Test.java)

public class Test {
  public static void main(String args[]){

    ConstructorSample cs1 = new ConstructorSample();
    System.out.println(cs1.str);

    ConstructorSample cs2 = new ConstructorSample("hoge");
    System.out.println(cs2.str);

  }
}
(実行結果)
C:\>java Test コンストラクタ1が呼ばれました null コンストラクタ2が呼ばれました hoge

コンストラクタまとめ

  • 初期化処理をするメソッドのようなものである。
  • コンストラクタ名は必ずクラス名と同じにする。
  • コンストラクタに戻り値の指定は不可。
    (戻り値を指定した場合はコンストラクタではなく通常メソッドとして扱われる)
  • 引き数が異なる複数のコンストラクタを定義することができる。
  • publicやprivateなどのアクセス権を設定できる。
  • コンストラクタを作成しない場合は、デフォルトコンストラクタが暗黙的に定義される。
  • 明示的にコンストラクタを定義した場合は、デフォルトコンストラクタは作成されない。
  • newと同時にしか使えない(インスタンス生成時以外は呼び出し不可)
  • コンストラクタから別のコンストラクタを呼ぶことも可能。
    (コンストラクタからthisで別のコンストラクタを呼ぶ場合は、処理の先頭に記述しなければならない)
  • サブクラスであってもコンストラクタは継承されない

コメント

タイトルとURLをコピーしました