【C#】ポリモーフィズムのサンプル(動物)

C#でポリモーフィズムのサンプルを作るには、まず、基底クラスを定義します。その後、その基底クラスを継承した派生クラスを定義します。最後に、基底クラスのインスタンスを使用して、派生クラスのインスタンスを呼び出します。

例えば、動物を表すAnimalクラスを基底クラスとし、それを継承したCatクラス、Dogクラスを作成し、それらを使用して、動物の鳴き声を出力するプログラムを作成することができます

abstract class Animal
{
    public abstract void MakeSound();
}

class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Meow");
    }
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Woof");
    }
}

この例では、基底クラスAnimalに、MakeSoundメソッドを宣言しています。これは、派生クラスがそれぞれ異なる鳴き声を出すために、オーバーライドする必要があることを示しています。 そして、Catクラス、DogクラスはAnimalsクラスを継承し、それぞれに異なる鳴き声を出すメソッドを実装しています。

これらクラスを使用するには、Animalクラスのインスタンスを作成し、それに対して、必要な操作を行うことで、使用することができます

Animal animal = new Cat();
animal.MakeSound(); // Meow

animal = new Dog();
animal.MakeSound(); // Woof

上記のプログラムでは、基底クラスのAnimalインスタンスを作成し、それに対して、CatクラスのインスタンスとDogクラスのインスタンスを代入しています。 そして、それぞれのインスタンスに対して、MakeSoundメソッドを呼び出すことで、それぞれの異なる鳴き声を出力することができます。

このように、基底クラスを定義し、それを継承した派生クラスを使用することで、同じインターフェースを持つ複数のクラスを扱うことができるようになり、プログラムをより柔軟に、再利用性の高いものにすることができます。

さらに次のようなサンプルも考えることができます

List<Animal> animalList = new List<Animals> { new Cat(), new Dog(), new Cat() };

foreach (var animal in animalList)
{
    animal.MakeSound();
}

これは、Catクラス、Dogクラスのインスタンスを格納したリストを作成し、それをforeach文で順に取り出し、MakeSoundメソッドを呼び出すことで、それぞれの動物の鳴き声を出力することができます。

上記のプログラムは、結果として、「Meow」,「Woof」,「Meow」が出力されます。

ポリモーフィズムは、プログラムをより柔軟に、再利用性を高めるために使用することができます。

それで、これが、C#でポリモーフィズムの一例です