//抽象类
// Visual Studio 允许定义抽象类.抽象类是为了派生类而定义接口的一个类.抽象类从本质上说是抽象的,
//因为在抽象类基础上建立的所有类都提供了一定的方法和属性.您不能在抽象类中创建对象----只能利用
//它们来派生新的类
// 抽象类在c#中用abstract 关键字来声明.必须提供的方法与属性用abstract来表明.
// 在vb.net中用MustInherit , MustOverride .
using System;
namespace FlashCards
{
/// <summary>
/// Shape 的摘要说明。
/// </summary>
public abstract class Shape //形状
{
public Shape()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public abstract float Top
{
get;
set;
}
public abstract float Left
{
get;
set;
}
public abstract float Area();
public abstract float Perimeter();
}
//覆盖抽象类成员的每一个成员定义都需要 Overrides(vb.net) 或 override(c#) 关键字.
public class CirCle:Shape
{
float fxCenter,fyCenter,fRadius;
public CirCle()
{
fxCenter=0;
fyCenter=0;
fRadius=0;
}
public override float Top
{
get{return fxCenter-fRadius;} //fx
set{fxCenter=value+fRadius;}
}
public override float Left
{
get{return fyCenter-fRadius;} //fy
set{fyCenter=value+fRadius;}
}
public override float Area()
{
return (float)(2*System.Math.PI *Math.Pow((double)fRadius,2 ));
}
public override float Perimeter()
{
return 2*fRadius*(float)System.Math.PI;
}
public float Radius
{
get{return fRadius;}
set{fRadius=value;}
}
public virtual void Center(float x,float y)
{
fxCenter=x;
fyCenter=y;
}
}
}
// Visual Studio 允许定义抽象类.抽象类是为了派生类而定义接口的一个类.抽象类从本质上说是抽象的,
//因为在抽象类基础上建立的所有类都提供了一定的方法和属性.您不能在抽象类中创建对象----只能利用
//它们来派生新的类
// 抽象类在c#中用abstract 关键字来声明.必须提供的方法与属性用abstract来表明.
// 在vb.net中用MustInherit , MustOverride .
using System;
namespace FlashCards
{
/// <summary>
/// Shape 的摘要说明。
/// </summary>
public abstract class Shape //形状
{
public Shape()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public abstract float Top
{
get;
set;
}
public abstract float Left
{
get;
set;
}
public abstract float Area();
public abstract float Perimeter();
}
//覆盖抽象类成员的每一个成员定义都需要 Overrides(vb.net) 或 override(c#) 关键字.
public class CirCle:Shape
{
float fxCenter,fyCenter,fRadius;
public CirCle()
{
fxCenter=0;
fyCenter=0;
fRadius=0;
}
public override float Top
{
get{return fxCenter-fRadius;} //fx
set{fxCenter=value+fRadius;}
}
public override float Left
{
get{return fyCenter-fRadius;} //fy
set{fyCenter=value+fRadius;}
}
public override float Area()
{
return (float)(2*System.Math.PI *Math.Pow((double)fRadius,2 ));
}
public override float Perimeter()
{
return 2*fRadius*(float)System.Math.PI;
}
public float Radius
{
get{return fRadius;}
set{fRadius=value;}
}
public virtual void Center(float x,float y)
{
fxCenter=x;
fyCenter=y;
}
}
}