マンガで分かる Java入門講座

第8章 メソッド
8-8. コンストラクタ

オブジェクト作成時に呼び出される、コンストラクタ(構築子)を紹介します。

● コンストラクタ

 Javaのクラスには、オブジェクト作成時に呼び出される「コンストラクタ」という特殊なメソッドを作成できます。

 コンストラクタはクラスと同じ名前です。コンストラクタは、オブジェクトが作成される際に呼び出されます。プログラマーは、このメソッド内で、オブジェクトの初期化処理を行います。

 コンストラクタは戻り値として、必ずオブジェクトを戻します。そのためメソッドに戻り値の型を書きません。

ソースコード)コンストラクタ src/sample/MyClass.java
package sample;

public class MyClass {
    // 公開フィールド(識別用名前)
    public String label = "名前";

    // コンストラクタ
    public MyClass(String newLabel) {
        label = newLabel;  // ラベルを設定
    }
}

● コンストラクタのオーバーロード

 コンストラクタはメソッドの1つです。そのため、引数を変えることで、複数のコンストラクタを作り、オーバーロードさせることができます。

 コンストラクタのオーバーロードは、引数によって初期化処理の内容を変える目的で使用されます。

ソースコード)コンストラクタのオーバーロード src/sample/MyClass.java
package sample;

public class MyClass {
    // 公開フィールド(識別用名前)
    public String label = "名前";

    // コンストラクタ
    public MyClass(String newLabel) {
        label = newLabel;  // ラベルを設定
    }

    // コンストラクタ その2
    public MyClass(int i) {
        label = "" + i;    // 数値をラベルに
    }
}

ソースコード)呼び出し元 src/sample/Sample.java
package sample;

public class Sample {
    public static void main(String[] args) {
        MyClass mc = new MyClass("遊");
        System.out.println(mc.label);   // 「遊」と出力

        MyClass mc2 = new MyClass(1);
        System.out.println(mc2.label);  // 「1」と出力
    }
}

● 引数なしのコンストラクタ

 コンストラクタを特に設定していない時は、引数なしでクラスからオブジェクトを作成できました。これは内部的に、引数なしのコンストラクタが用意されていたからです。

 しかし、自分でコンストラクタを設定した場合は、引数なしのコンストラクタは自動では使えなくなります。その際は、自分で引数なしのコンストラクタを追加しなければなりません。

ソースコード)引数なしのコンストラクタ src/sample/MyClass.java
package sample;

public class MyClass {
    // 公開フィールド(識別用名前)
    public String label = "名前";

    // コンストラクタ
    public MyClass(String newLabel) {
        label = newLabel;  // ラベルを設定
    }

    // コンストラクタ その2
    public MyClass(int i) {
        label = String.valueOf(i);  // 数値をラベルに
    }

    // コンストラクタ その3
    public MyClass() {
    }
}

ソースコード)呼び出し元 src/sample/Sample.java
package sample;

public class Sample {
    public static void main(String[] args) {
        MyClass mc = new MyClass("遊");
        System.out.println(mc.label);   // 「遊」と出力

        MyClass mc2 = new MyClass(1);
        System.out.println(mc2.label);  // 「1」と出力

        MyClass mc3 = new MyClass();
        System.out.println(mc3.label);  // 「名前」と出力
    }
}

この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/31  更新:2013/05/31  [Permalink]