018 オブジェクト指向の深化(インターフェイスと抽象クラスの利用) 002 解答例

// 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 クラスを継承し、更に特有のメソッドを追加しています。これによって、クラス階層が構築され、各クラスが共通の特徴を持ちつつ、独自の振る舞いを提供できるようになります。

「018 オブジェクト指向の深化」問題集リスト