superとは
superキーワードは、サブクラスからスーパークラスのメンバやコンストラクタにアクセスする時に使用されるキーワードです。
superの用途
superキーワードは主に以下2つの用途があります。
- スーパークラスのフィールドやメソッドを参照する
- スーパークラスのコンストラクタを呼び出す
スーパークラスのフィールドやメソッドを参照する
super.メソッド名()で、スーパークラスのメソッドを呼び出すことができます。
superを使用しなくてもサブクラスからスーパークラスのメソッドを呼ぶことはできますが、
オーバーライドしたメソッドから明示的にスーパークラスの処理を呼出したい時に使用します。
- (SubClassからSuperClassのメソッドを参照する例)
-
public class SuperClass { public void display() { System.out.println("SuperClass - display"); } } public class SubClass extends SuperClass { @Override public void display() { super.display(); System.out.println("SubClass - display"); } }
SubClassのmethod2を呼び出すと、以下のように表示されます。
- (実行結果)
- SuperClass – display SubClass – display
スーパークラスのコンストラクタを呼び出す
super(引数)で、スーパークラスのコンストラクタを呼び出すことができます。
サブクラスをインスタンス化した時は自動でスーパークラスのコンストラクタが呼ばれますが、この時は引数なしのコンストラクタが呼ばれます。
明示的に引数ありのコンストラクタを呼び出したい場合にsuperを使用します。
- (SubClassからSuperClassのコンストラクタを呼び出す例)
-
public class SuperClass { public SuperClass() { System.out.println("SuperClass"); } } public class SubClass extends SuperClass { public SubClass() { super(); System.out.println("SubClass"); } }
SubClassをnewすると、以下のように表示されます。
- (実行結果)
- SuperClass SubClass
注意点として、コンストラクタを呼び出すためのsuperは
必ずコンストラクタ定義の先頭に記述する必要があります。
コメント