はじめに

継承関係にある2つのクラスにおいて、サブクラスのコンストラクタからスーパークラスのコンストラクタを明示的に指定して呼び出す方法について説明します。

このページはJavaでの実現方法について説明しています、C++での実現方法についてはこちらを、PHPでの実現方法についてはこちらをご参照ください。

サブクラスのコンストラクタ宣言

サブクラスのインスタンス生成時に利用するスーパークラスのコンストラクタを指定するには、サブクラスの各コンストラクタの実装の先頭に下記のように指定して呼び出します。

サンプルコード
class Super
{
    public Super()
    {
        System.out.println("Super() が呼ばれました。");
    }

    public Super(int aNumber)
    {
        System.out.println("Super(int) が呼ばれました。");
    }
}

class Sub extends Super
{
    public Sub()
    {
        Super();

        System.out.println("Sub() が呼ばれました。");
    }

    public Sub(int aNumber)
    {
        Super(aNumber);

        System.out.println("Sub(int) が呼ばれました。");
    }
}

class EntryPoint
{
    static void main(String[] aArgument)
    {
        Super tInstance1,tInstance2;

        tInstance1=new Sub();
        tInstance2=new Sub(10);
    }
}

このプログラムをコンパイル/実行した結果は、下記の通りです。

実行結果
Super() が呼ばれました。
Sub() が呼ばれました。
Super(int) が呼ばれました。
Sub(int) が呼ばれました。

サブクラスのコンストラクタ「Sub(int)」を利用してインスタンスを生成した際、スーパークラスのコンストラクタ「Super(int)」が正しく呼び出されていることがご理解いただけると思います。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。