Javaちょこっとリファレンス
HOME > super

super

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

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

サンプルソース

親クラス(SuperClass.java)

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で親クラスのデフォルトコンストラクタを呼ぶ

SubClass.java
public class SubClass extends SuperClass {

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

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

実行結果

コマンドプロンプト
Super_Const Sub_Const


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

SubClass.java
public class SubClass extends SuperClass {

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

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

実行結果

コマンドプロンプト
Super_Const_Str Sub_Const


例)superでオーバーライド前のメソッドを呼ぶ

SubClass.java
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基本カテゴリ

HOMEへ戻る TOPへ戻る