// Animal クラス(抽象クラス)
abstract class Animal {
// 鳴き声を返す抽象メソッド
abstract String makeSound();
}
// Mammal クラス(具象クラス)
class Mammal extends Animal {
// 出産するメソッド
void giveBirth() {
// 出産の具体的な実装
}
// 鳴き声を返すメソッド
@Override
String makeSound() {
return "Mammal sound";
}
}
// Bird クラス(具象クラス)
class Bird extends Animal {
// 卵を産むメソッド
void layEggs() {
// 卵を産む具体的な実装
}
// 鳴き声を返すメソッド
@Override
String makeSound() {
return "Bird sound";
}
}
// Dog クラス(具象クラス)
class Dog extends Mammal {
// 家を守るメソッド
void guardHouse() {
// 家を守る具体的な実装
}
// 鳴き声を返すメソッド
@Override
String makeSound() {
return "Woof! Woof!";
}
}
この例では、Animal
クラスが抽象クラスであり、makeSound()
メソッドを抽象メソッドとして定義しています。Mammal
クラスと Bird
クラスが Animal
クラスを継承し、それぞれ特有のメソッドを追加しています。Dog
クラスは Mammal
クラスを継承し、更に特有のメソッドを追加しています。これによって、クラス階層が構築され、各クラスが共通の特徴を持ちつつ、独自の振る舞いを提供できるようになります。