using System; using System.Collections.Generic; using System.Text; namespace HELLO { class 矩形 { static void Main(string[] args) { Example ex = new Example();//实例化 Example ex1 = new Example(1, 2);//实例化 Example2 example2 = new Example2(4, 6); Console.WriteLine("面积为{0}", example2.area()); // 创建一个 List<Shape> 对象,并向该对象添加 Circle和 Rectangle var shape = new List<Shape> { new Circle(), new Rectangle() }; // 使用 foreach 循环对该列表的派生类进行循环访问,并对其中的每个 Shape 对象调用 Draw 方法 foreach (var item in shape) { item.X = 4; item.Y = 5; item.Draw(); item.Area(); } } } class Example { public Example(int a, int b) { Console.WriteLine("您这个是有参构造函数,分别输入了{0}和{1}", a, b); } public Example() { Console.WriteLine("您这个是无参构造函数"); } } abstract class Example1 { abstract public int area(); } class Example2 : Example1 { private int a, b; public Example2(int a, int b) { this.a = a; this.b = b; } public override int area() { return a * b; } } public class Shape//父类 { internal int x,y; public int X { get { return x; } set { x = value; } } public int Y { get { return y; } set { y = value; } } public virtual void Draw() { Console.WriteLine("我要画图形"); } public virtual void Area() { int area = x + y; Console.WriteLine("面积是{0}", area); } } public class Circle : Shape//派生类1 { public override void Draw()//重写方法1 { Console.WriteLine("我要画一个圆"); base.Draw(); } public override void Area()//重写方法2 { int area = 3 * x * y; Console.WriteLine("面积是{0}", area); } } public class Rectangle : Shape//派生类2 { public override void Draw() { Console.WriteLine("我要画一个矩形"); base.Draw(); } public override void Area() { int area = x * y; Console.WriteLine("面积是{0}", area); } } }