016 抽象クラス(ポリモーフィズムと抽象クラス) 011 解答例

// 抽象クラス Animal
abstract class Animal {
    public abstract void makeSound();
}

// 具象クラス Dog
class Dog extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Woof! Woof!");
    }
}

// 具象クラス Cat
class Cat extends Animal {
    @Override
    public void makeSound() {
        System.out.println("Meow! Meow!");
    }
}

// メインクラス
public class Main {
    public static void main(String[] args) {
        // Animal 型の配列を作成
        Animal[] animals = new Animal[2];

        // Dog インスタンスを配列に格納
        animals[0] = new Dog();

        // Cat インスタンスを配列に格納
        animals[1] = new Cat();

        // ポリモーフィズムを使用して異なる種類の動物のサウンドを出力
        for (Animal animal : animals) {
            animal.makeSound();
        }
    }
}

このプログラムでは、Animal 抽象クラスを定義し、その中に makeSound 抽象メソッドがあります。DogCat クラスはそれぞれ Animal を拡張して、makeSound メソッドをオーバーライドしています。Main クラスでは、Animal 型の配列を作成し、異なる種類の動物のサウンドをポリモーフィズムを使って表示しています。

出力結果:

Woof! Woof!
Meow! Meow!

このプログラムでは、Animal 型の配列 animals を作成し、その中に Dog インスタンスと Cat インスタンスを格納しています。その後、拡張forループを使用して配列内の各要素に対して makeSound メソッドを呼び出しています。

配列の1番目の要素は Dog インスタンスであり、makeSound メソッドが呼び出されると "Woof! Woof!" が出力されます。配列の2番目の要素は Cat インスタンスであり、同様に makeSound メソッドが呼び出されると "Meow! Meow!" が出力されます。

これがポリモーフィズムの一例です。

「016 抽象クラス」問題集リスト