014 継承(明示的なスーパークラスのメソッド呼び出し) 030 解答例

public class Vehicle {
    public void start() {
        System.out.println("車両が始動しました");
    }
}

public class Car extends Vehicle {
    // Car クラス独自のフィールドやメソッドがあればここで宣言

    // start メソッドのオーバーライド
    @Override
    public void start() {
        // Car クラス独自の処理
        System.out.println("車がエンジンをかけました");

        // 親クラスの start メソッド呼び出し
        super.start();
    }

    // Car クラス独自のメソッドがあればここで宣言
}

この解答例では、Vehicle クラスに start メソッドがあり、それを Car クラスが継承しています。Car クラスでは start メソッドをオーバーライドし、「車がエンジンをかけました」と表示した後に、super.start() を使って親クラスの start メソッドも呼び出しています。これにより、親クラスのメッセージも表示されます。

明示的なスーパークラスのメソッド呼び出し

Javaにおいて、サブクラスでスーパークラスのメソッドをオーバーライドした場合、サブクラスで新しい実装をしたい場合でも、親クラスのメソッドを呼び出すことができます。これは、「明示的なスーパークラスのメソッド呼び出し」と呼ばれます。super キーワードを使用して行います。

以下はその基本的な構造です:

public class SuperClass {
    public void method() {
        System.out.println("SuperClass method");
    }
}

public class SubClass extends SuperClass {
    @Override
    public void method() {
        // 親クラスのメソッド呼び出し
        super.method();
        
        // サブクラス独自の処理
        System.out.println("SubClass method");
    }
}

ここでは、SubClassSuperClass を継承しています。SubClass では method をオーバーライドしていますが、super.method(); を使って親クラスの method を呼び出しています。これにより、親クラスの動作を利用しつつ、サブクラス独自の処理を追加できます。

この仕組みを使うことで、コードの再利用性や保守性を向上させることができます。

「014 継承」問題集リスト