Java の super

Siddharth Swami 2023年10月12日
Java の super

Java には、親クラスにいくらか関連する定義済みのキーワード super があります。このチュートリアルでは、super() 関数について詳しく説明します。

Java では、super キーワードは親クラスオブジェクトの参照変数として機能します。親のクラスメソッドと変数を呼び出すために使用できます。

例えば

class Teacher { // Parent class
  int grade = 90;
}

class Students extends Teacher { // subclass
  Students() {
    System.out.println("Grade " + super.grade);
  }
}

public class Main {
  public static void main(String[] args) {
    Students s = new Students();
  }
}

出力:

Grade 90

上記の例では、super キーワードを使用して、サブクラス Students のコンストラクターから親クラス Teacher から変数 grade にアクセスしました。

親のクラスコンストラクターを呼び出す super() 関数もあります。この関数は、親クラスのコンストラクターを呼び出すためにのみ使用されます。パラメトリックコンストラクターとノンパラメトリックコンストラクターはどちらも、super() 関数を使用して呼び出すことができます。super() 関数の使用中にコンストラクターがスーパークラスコンストラクターを明示的に呼び出さない場合、スーパークラスの引数のないコンストラクターは Java コンパイラー自体によって呼び出されます。

以下のコードを参照してください。

class Teacher { // Parent class

  Teacher() // constructor
  {
    System.out.println("Teacher class Constructor");
  }
}
class Students extends Teacher { // subclass
  Students() {
    super();
    System.out.println("Students class Constructor");
  }
}

public class Main {
  public static void main(String[] args) {
    Students s = new Students();
  }
}

出力:

Teacher class Constructor
Students class Constructor

上記のコードで、メッセージを出力する親クラス Teacher と親クラスコンストラクターを作成しました。次に、サブクラス StudentsTeacher から拡張されます。このコンストラクター Students() は、親クラスコンストラクターを呼び出すための super() 関数で構成されています。次に、プログラムを実行するためのサブクラスを呼び出すメインクラスがあります。super() 関数は、親クラスコンストラクターを呼び出して、親クラスから、次にサブクラスからメッセージを出力しました。

関連記事 - Java Class