public class Animal
        {
            public virtual void Eat()
            {
                Console.WriteLine("Animal eat");
                Console.ReadKey();
            }
        }

        public class Cat : Animal
        {
            public override void Eat()
            {
                Console.WriteLine("Cat eat");
                Console.ReadKey();
            }
        }

        public class Dog : Animal
        {
            public override void Eat()
            {
                Console.WriteLine("Dog eat");
                Console.ReadKey();
            }
        }
        public class Snake : Animal
        {
            public new void Eat()
            {
                Console.WriteLine("Snake eat");
                Console.ReadKey();
            }
        }

        class Tester
        {
            static void Main(string[] args)
            {
                Animal[] animals = new Animal[5];

                animals[0] = new Animal();
                animals[1] = new Cat();
                animals[2] = new Dog();
                animals[3] = new Snake();
                for (int i = 0; i < 4; i++)
                {
                    animals[i].Eat();
                }
                Snake snake = new Snake();
                snake.Eat();
            }
        }

直接上代码比较容易记

运行结果。子类重写父类,实例化父类,执行子类方法,若要执行子类new出的方法,则要实例化子类。

Animal eat
Cat eat
Dog eat
Animal eat
Snake eat

 

 posted on 2018-11-17 14:39  絆τ  阅读(123)  评论(0编辑  收藏  举报