superキーワード

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は
必ずコンストラクタ定義の先頭に記述する必要があります。

コメント

タイトルとURLをコピーしました