オーバーライド
オブジェクト指向言語において、サブクラス(派生クラス)が親クラスのメソッドを再定義して上書きすること
→サブクラスは親クラスのメソッドの振る舞いを変更したり、新しい機能を追加したりできる
オーバーライドで重要な点
-
メソッドのシグネチャが親クラスと一致していること
シグネチャ : メソッド名、引数の型、戻り値の型 -
サブクラスでオーバーライドするメソッドは、親クラスのメソッドと同じメソッド名と引数を持ち、戻り値の型も同じである必要がある
→メソッドの処理内容や振る舞いはサブクラスで変更可能
オーバーライドの例
class Animal {
void makeSound() {
System.out.println("Animal makes a sound.");
}
}
class Cat extends Animal {
// 親クラスのmakeSoundメソッドをオーバーライド
@Override
void makeSound() {
System.out.println("Meow!");
}
}
class Dog extends Animal {
// 親クラスのmakeSoundメソッドをオーバーライド
@Override
void makeSound() {
System.out.println("Woof!");
}
}
Animalクラスを継承してCatクラスとDogクラスを作成
↓
CatクラスとDogクラスはそれぞれmakeSoundメソッドをオーバーライドしている
↓
CatクラスのmakeSoundメソッドは"Meow!"を表示
DogクラスのmakeSoundメソッドは"Woof!"を表示
親クラスのAnimalクラスにあるmakeSoundメソッドの振る舞いは、それぞれのサブクラスによって変更されている