编辑代码

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();
                }
            }
        }
    }
}