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");
}
}
ここでは、SubClass
が SuperClass
を継承しています。SubClass
では method
をオーバーライドしていますが、super.method();
を使って親クラスの method
を呼び出しています。これにより、親クラスの動作を利用しつつ、サブクラス独自の処理を追加できます。
この仕組みを使うことで、コードの再利用性や保守性を向上させることができます。