using System; namespace testClassApp { /// <summary> /// Class1 的摘要说明。 /// </summary> class Class1 { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main(string[] args) { // // TODO: 在此处添加代码以启动应用程序 // double len = 2.5; double wid = 3.0; double rad = 4.1; Rectangle aRect = new Rectangle(); aRect.length = len; aRect.width = wid; Circle aCirc = new Circle (rad); Console.WriteLine ("Area of Rect is:{0}",aRect.Area ()); Console.WriteLine ("Area of Rect is:{0}",aRect.Area (2)); Console.WriteLine ("Area of Circ is:{0}",aCirc.Area ()); } } abstract class Shape //抽象基类,不可实例化 { public const double pi=3.14; //常量 protected double x, y; //私有,可继承变量 public Shape() //默认构造函数 { x=y=0; } public Shape(double x,double y) //带参数构造函数 { this.x = x; this.y = y; } public abstract double Area(); //抽象方法,需重载 } class Rectangle: Shape { public Rectangle():base(){} public Rectangle(double x, double y): base(x,y){}//使用基类构造函数 public double Area() //函数重载 { return (x*y); } public double Area(double x) //函数重载 { return (x*x); } public double length //属性:矩形长度 { get { return x; } set { if (value>0){x = value;} } } public double width //属性:矩形宽度 { get { return y; } set { if (value>0){y = value;} } } } class Ellipse: Shape { public Ellipse(double x, double y):base(x,y){}//使用基类Shape的构造函数 public override double Area() //函数重载 { return pi*x*y; } } class Circle: Ellipse { public Circle(double r):base(r,0){} //使用基类Ellipse的构造函数 public override double Area() //函数重载 { return pi*x*x; } } }