HOME > コンストラクタ

コンストラクタ

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


【コンストラクタまとめ】
 ・初期化処理をするメソッドのようなものである
 ・コンストラクタ名は必ずクラス名と同じにする
 ・引き数が異なる複数のコンストラクタを定義することができる
 ・publicやprivateなどのアクセス権を設定できる
 ・コンストラクタを省略した場合は、デフォルトコンストラクタが暗黙的に定義される
 ・1つでもコンストラクタを定義した場合は、デフォルトコンストラクタは定義されない
 ・コンストラクタに戻り値はありません
 ・コンストラクタから別のコンストラクタを呼ぶことも可能

コンストラクタ構文

 コンストラクタ構文

修飾子 コンストラクタ名(型 変数名[...]){
    //処理
}

【アクセス修飾子一覧】
修飾子説明
private同じクラス内からのみアクセス可能。
指定なし同一クラス、パッケージのみアクセス可能。
protected同一クラス、パッケージ、サブクラスのみアクセス可能。
publicどこからでもアクセス可能。

サンプルソース

 コンストラクタサンプル

★コンストラクタサンプルクラス
public class ConSample {

    //デフォルトコンストラクタをprivate化
    private ConSample(){
        System.out.println("ConSample-Default");
    }

    //コンストラクタ1
    public ConSample(String str){
        this();    //引き数なしコンストラクタを呼出 (※1)
        System.out.println("ConSample-String");
    }

    //コンストラクタ2
    public ConSample(String str, int i){
        System.out.println("ConSample-StringInt");
    }

}


★実行クラス public class Test { public static void main(String args[]){ System.out.println("*** ConSample(String str)で生成 ***"); ConSample cs = new ConSample("hoge"); System.out.println("*** ConSample(String str, int i)で生成 ***"); ConSample cs2 = new ConSample("hoge", 0); //ConSample cs3 = new ConSample(); //コンパイル不可 //↑(引き数無しコンストラクタはprivate指定したので呼び出し不可) } }

実行結果

 コマンドプロンプト

C:\>java Test
*** ConSample(String str)で生成 ***
ConSample-Default
ConSample-String
*** ConSample(String str, int i)で生成 ***
ConSample-StringInt

(※1)「ConSample(String str)」コンストラクタ内の「this();」で引き数無しコンストラクタを呼び出しているので、「ConSample-Default」が出力されています。

※thisキーワードに関しては「this」もご覧ください。

Java基本カテゴリ