HOME > super

super

superキーワードは、親クラスのコンストラクタやメソッドを明示的に呼ぶ時に使います。
superを使うと次のようなことができます。

・親クラスのコンストラクタを呼ぶ
・オーバーライド前のメソッドを呼ぶ

サンプルソース

 親クラス(SuperClass.java)

public class SuperClass {

    public SuperClass(){
        System.out.println("Super_Const");
    }

    public SuperClass(String str){
        System.out.println("Super_Const_Str");
    }

    public void fnc(){
        System.out.println("Super_fnc");
    }
}

以下に出てくるサンプルは、このSuperClass.javaを継承するものとします。



【superで引数なしコンストラクタを呼ぶ】

 親クラスのデフォルトコンストラクタを呼ぶ

public class SubClass extends SuperClass {

    public SubClass(){
        super();
        System.out.println("Sub_Const");
        //super();    ←メソッド内の先頭以外に書くとエラー
    }
}

※親クラスのデフォルトコンストラクタは、superで明示的に呼び出さなくても呼び出されます。

 コマンドプロンプト

Super_Const
Sub_Const


【superで引数ありコンストラクタを呼ぶ】

 親クラスの引数ありコンストラクタを呼ぶ

public class SubClass extends SuperClass {

    public SubClass(){
        super("hoge");
        System.out.println("Sub_Const");
        //super("hoge");    ←メソッド内の先頭以外に書くとエラー
    }
}

superで親クラスコンストラクタを呼ぶ場合は、コンストラクタ内の1行目に呼ぶ必要があります。

 コマンドプロンプト

Super_Const_Str
Sub_Const


【superでメソッドを呼ぶ】

 オーバーライド前のメソッドを呼ぶ

public class SubClass extends SuperClass {

    public void  fnc(){
        super.fnc();    //  ←メソッドならどこで呼び出してもOK
        System.out.println("Sub_fnc");
        super.fnc();    //  ←メソッドならどこで呼び出してもOK
    }
}

 コマンドプロンプト

Super_fnc
Sub_fnc
Super_fnc


Java基本カテゴリ