C#中多态

我的理解是:通过继承实现的不同对象调用相同的方法,表现出不同的行为,称之为多态.
1: OverRide 实现多态

 1 public class Animal
 2     {
 3         public virtual void Eat()
 4         {
 5             Console.WriteLine("Animal eat");
 6         }
 7     }
 8     public class Dog : Animal
 9     {
10         public override void Eat()
11         {
12             Console.WriteLine("Dog eat");
13         }
14     }
15     public class WolfDog : Dog
16     {
17         public override void Eat()
18         {
19             Console.WriteLine("WolfDog eat");
20         }
21     }
22     class Tester
23     {
24         static void Main(string[] args)
25         {
26             Animal[] animals = new Animal[3];
27             animals[0] = new Animal();
28             animals[1] = new Dog();
29             animals[2] = new WolfDog();
30             for (int i = 0; i < 3; i++)
31             {
32                 animals[i].Eat();
33             }
34         }
35 }

运行结果为:
Animal eat...
Dog eat...
WolfDog eat...
2:New虚方法实现多态

 1 public class Animal
 2     {
 3         public virtual void Eat()
 4         {
 5             Console.WriteLine("Animal eat");
 6         }
 7     }
 8     public class Cat : Animal
 9     {
10         public new void Eat()
11         {
12             Console.WriteLine("Cat eat");
13         }
14     }
15     class Tester
16     {
17         static void Main(string[] args)
18 
19         {
20             Animal a = new Animal();
21             a.Eat();
22             Animal ac = new Cat();
23             ac.Eat();
24             Cat c = new Cat();
25             c.Eat();
26         }
27     }

输出结果如下
Animal eat...
Animal eat...
Cat eat...

原文地址:https://www.cnblogs.com/liubeimeng/p/3822308.html