Javaにおけるsuperキーワードの使い方と動作原理


まず、superキーワードの使い方を見てみましょう。サブクラス内でスーパークラスのメソッドやフィールドにアクセスするには、次のような形式でsuperキーワードを使用します:

super.メソッド名();    // スーパークラスのメソッドを呼び出す
super.フィールド名;    // スーパークラスのフィールドにアクセスする

superキーワードを使用することで、サブクラスはスーパークラスのメソッドやフィールドをオーバーライドすることなく利用できます。

次に、superキーワードの動作原理を説明します。Javaのクラス階層では、サブクラスはスーパークラスの属性や振る舞いを継承します。superキーワードは、スーパークラスのコンストラクタやメソッドを呼び出すために使用されます。

例えば、以下のようなスーパークラスとサブクラスがあるとします:

class Animal {
    protected String name;

    public Animal(String name) {
        this.name = name;
    }

    public void eat() {
        System.out.println("食べ物を食べます");
    }
}
class Dog extends Animal {
    public Dog(String name) {
        super(name);    // スーパークラスのコンストラクタを呼び出す
    }

    public void bark() {
        System.out.println("ワンワンと鳴きます");
    }
}

上記の例では、DogクラスはAnimalクラスを継承しています。Dogクラスのコンストラクタでは、superキーワードを使用してAnimalクラスのコンストラクタを呼び出しています。

これにより、Dogクラスのインスタンスを作成する際には、まずAnimalクラスのコンストラクタが実行され、nameフィールドが初期化されます。

さらに、Dogクラスにはbarkメソッドがありますが、eatメソッドは定義されていません。しかし、Dogクラス内でsuperキーワードを使用することで、Animalクラスのeatメソッドを呼び出すことができます。

以上のように、superキーワードを使用することで、サブクラスはスーパークラスのメソッドやフィールドを利用できます。これにより、コードの再利用性と保守性が向上します。

superキーワードの使い方と動作原理について説明しました。これを参考にして、自身のプログラムでsuperキーワードを適切に活用してみてください。