class Program
{
static void Main(string[] args)
{
// 基本クラスの配列を宣言する
Animal[] a = new Animal[5];
// さまざまな派生クラスのインスタンスを代入する
a[0] = new Cat();
a[1] = new Dog();
a[2] = new Cow();
a[3] = new Dog();
a[4] = new Cat();
// さまざまな派生クラスのDrawメソッドが呼び出される
for (int i = 0; i < a.Length; i++)
{
a[i].Cry();
}
Console.WriteLine();
}
}
public class Animal
{
// 鳴くメソッド
public virtual void Cry()
{
// 仮の処理を記述しておく
Console.Write("?");
}
}
// 猫を意味する派生クラス
public class Cat :Animal
{
public override void Cry()
{
Console.WriteLine("にゃ〜");
}
}
// 犬を意味する派生クラス
public class Dog : Animal
{
public override void Cry()
{
Console.WriteLine("わん!");
}
}
// 牛を意味する派生クラス
public class Cow : Animal
{
public override void Cry()
{
Console.WriteLine("も〜");
}
}