class Shape { public virtual void Draw() { Console.WriteLine("Draw a shape"); } } class Circle : Shape { public override void Draw() { Console.WriteLine("Draw a circle"); } } class Rectangle : Shape { public override void Draw() { Console.WriteLine("Draw a Rectangle"); } } class Triangle : Shape { public override void Draw() { Console.WriteLine("Draw a Triangle"); } } class Programm { static void Main() { //此次就说明了,派生类对象可以作为基类对象进行处理 Shape[] shapes = { new Circle(), new Rectangle(), new Triangle() };
foreach (Shape s in shapes) { //调用Draw()方法的时候,调用了派生重写的方法,而不是基类 s.Draw(); } } }