using System;
namespace Animal
{
public abstract class Animal
{
public abstract void MakeSound();
public virtual void CallMyself()
{
Console.WriteLine("这是一个动物。");
}
}
public class Dog : Animal
{
private string name;
public Dog(string name)
{
this.name = name;
}
public override void MakeSound()
{
Console.WriteLine($"{name}:汪汪...");
}
public override void CallMyself()
{
Console.WriteLine($"{name}是一只小狗。");
}
public void Fatch()
{
Console.WriteLine($"{name}正在接球。");
}
}
public class Cat : Animal
{
private string name;
public Cat(string name)
{
this.name = name;
}
public override void MakeSound()
{
Console.WriteLine($"{name}:喵喵...");
}
public override void CallMyself()
{
Console.WriteLine($"{name}是一只小猫。");
}
public void Sleeping()
{
Console.WriteLine($"{name}正在安静地睡觉。");
}
}
class program
{
static void Main(string[] args)
{
Animal[] animals = new Animal[2];
for(int i = 0; i < animals.Length; i++)
{
Console.WriteLine("请输入动物的类型(dog/cat):");
string type = Console.ReadLine();
if (type == "dog")
{
Console.WriteLine("请输入狗的名字:");
string name = Console.ReadLine();
animals[i] = new Dog(name);
}
else if (type == "cat")
{
Console.WriteLine("请输入猫的名字:");
string name = Console.ReadLine();
animals[i] = new Cat(name);
}
else
{
Console.WriteLine("动物类型输入错误,请重新输入!");
i--;
}
}
foreach(Animal a in animals)
{
a.MakeSound();
if (a is Dog dog)
{
dog.CallMyself();
dog.Fatch();
}
else if (a is Cat cat)
{
cat.CallMyself();
cat.Sleeping();
}
}
}
}
}