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