using System;

namespace testClassApp
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//

double len = 2.5;
double wid = 3.0;
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 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 override double Area() //函数重载
{
return (x*y);
}
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;
}
}

}