using System;
namespace control4_5
{
/*
 * 本程序演示抽象类和抽象方法的定义和使用
 * 注意:只能在抽象类中声明抽象方法
 * 在本程序中声明了抽象方法:绘制控件Paint方法
 */
//控件类为抽象类
abstract class Control
{
//以下为属性的设置,分别表示控件的高度,宽度,左上角x坐标和左上角y坐标
protected int nHeight=0,nWidth=0,nLeft=0,nTop=0;
//表示控件的高度
public int Height
{
get
{
return nHeight;
}
set
{
nHeight=value;
}
}
//表示控件的宽度
public int Width
{
get
{
return nWidth;
}
set
{
nWidth=value;
}
}
//表示控件左上角的x坐标
public int Left
{
get
{
return nLeft;
}
set
{
nLeft=value;
}
}
//表示控件左上角的y坐标
public int Top
{
get
{
return nTop;
}
set
{
nTop=value;
}
}
public Control(int nh,int nw,int nl,int nt)
{
nHeight=nh;
nWidth=nw;
nLeft=nl;
nTop=nt;
}
public Control():this(0,0,0,0)
{
}
//抽象方法定义
public abstract void Paint();
}
//矩形控件
class RectangleControl:Control
{
public RectangleControl(int nh,int nw,int nl,int nt):base(nh,nw,nl,nt)
{
}
public RectangleControl():base()
{
}
//重写抽象方法Paint()
public override void Paint()
{
//以下代码用于绘制矩形
Console.WriteLine("绘制矩形");
Console.WriteLine("矩形左上角坐标(x,y)-({0},{1})",nLeft,nTop);
Console.WriteLine("矩形高度:{0},矩形宽度:{1}",nHeight,nWidth);
}
}
//圆形控件
class CircleControl:Control
{
public CircleControl(int nh,int nw,int nl,int nt):base(nh,nw,nl,nt)
{
}
public CircleControl():base()
{
}
//重写抽象方法Paint()
public override void Paint()
{
//以下代码用于绘制圆或者椭圆
Console.WriteLine("绘制圆或者椭圆");
Console.WriteLine("圆或者椭圆左上角坐标(x,y)-({0},{1})",nLeft,nTop);
Console.WriteLine("高度:{0},宽度:{1}",nHeight,nWidth);
}
}
class Class1
{

static void Main(string[] args)
{
Control[] controls=new Control[2];
//controls[0]=new Control(0,0,100,100);不能实例化抽象类
controls[0]=new RectangleControl(0,0,100,100);
controls[1]=new CircleControl(500,500,100,100);
for(int i=0;i<2;i++)
{
Console.WriteLine();
controls[i].Paint();
}
Console.Read();
}
}
}
public Control():this(0,0,0,0) //不太懂这个用法的意思?(查了MSDN也没讲)