using System;
// 继承关键字
//virtual : 声明基类的某个成员在派生类中能被覆盖
派生类继承了其基类的成员.如果派生类用同样的签名定义了一个成员,这个派生类成员就会覆盖基类成员.成员的签名包括它的名称,参数列表,参数类型和返回的类型.
如果一个派生类用同样的名称定义了一个成员,但是定义了与基类不同的参数列表,参数类型或返回类型,派生成员将会重载或者遮蔽该基类成员.如果某个基类成员仍然可用,另一个成员将会重载这个成员.如果派生成员代替了基类成员,另一个成员就会遮蔽这个成员.
能被覆盖的成员必须被声明为virtual(1).
namespace FlashCards
{
/// <summary>
/// CirCle 的摘要说明。
/// </summary>
public class CirCle
{
float fxCenter,fyCenter,fRadius;
public CirCle()
{
//
// TODO: 在此处添加构造函数逻辑
//
fxCenter=0;
fyCenter=0;
fRadius=0;
}
public float Top
{
get{return fxCenter-fRadius;}//fx
set{fxCenter=value+fRadius;}
}
public float Left
{
get{return fyCenter-fRadius;} //fy
set{fyCenter=value+fRadius;}
}
public virtual float Area()
{
return (float)(System.Math.PI *Math.Pow((double)fRadius,2) );
}
public 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) //virtual : 声明基类的某个成员在派生类中能被覆盖
{
fxCenter=x;
fyCenter=y;
}
}
public class Sphere:CirCle //球体,圆
{
float fCenter;
public Sphere()
{
fCenter=0;
}
public override float Area()
{
return (float)(4*Math.PI *Math.Pow((double)base.Radius ,2) ); //圆的面积
}
public new void Center(float x,float y)
{
this.Center (x,y,0);
}
public void Center(float x,float y,float z)
{
base.Center(x,y) ;
fCenter=z;
}
public float Volume() //体积
{
return (float)((4/3)*System.Math.PI*Math.Pow((double)base.Radius,3));
}
public float Front
{
get{return fCenter-base.Radius ;}
set{fCenter=value+base.Radius ;}
}
}
}
private void Button3_Click(object sender, System.EventArgs e)
{
CirCle myCircle=new CirCle();
myCircle.Radius =2;
myCircle.Center(10,2);
Response.Write("圆的面积: " +myCircle.Radius.ToString() +"<br>");
Response.Write("圆的面积: " +myCircle.Area()+"<br>");
Response.Write("圆的周长: "+myCircle.Perimeter()+"<br>" ) ;
Sphere mySphere=new Sphere();
mySphere.Radius =10;
mySphere.Center(10,20,25) ;
Response.Write("mySphere Top :"+mySphere.Top +"<br>" ) ;
Response.Write(" Left :"+mySphere.Left +"<br>" ) ;
Response.Write(" Front :"+mySphere.Front +"<br>" ) ;
Response.Write(" volume:"+mySphere.Volume() +"<br>" ) ;
Response.Write(" surface area : "+mySphere.Area()+ "<br>" ) ;
Response.Write(" circumference : "+mySphere.Perimeter() +"<br>" ) ;
}
// 继承关键字
//virtual : 声明基类的某个成员在派生类中能被覆盖
派生类继承了其基类的成员.如果派生类用同样的签名定义了一个成员,这个派生类成员就会覆盖基类成员.成员的签名包括它的名称,参数列表,参数类型和返回的类型.
如果一个派生类用同样的名称定义了一个成员,但是定义了与基类不同的参数列表,参数类型或返回类型,派生成员将会重载或者遮蔽该基类成员.如果某个基类成员仍然可用,另一个成员将会重载这个成员.如果派生成员代替了基类成员,另一个成员就会遮蔽这个成员.
能被覆盖的成员必须被声明为virtual(1).
namespace FlashCards
{
/// <summary>
/// CirCle 的摘要说明。
/// </summary>
public class CirCle
{
float fxCenter,fyCenter,fRadius;
public CirCle()
{
//
// TODO: 在此处添加构造函数逻辑
//
fxCenter=0;
fyCenter=0;
fRadius=0;
}
public float Top
{
get{return fxCenter-fRadius;}//fx
set{fxCenter=value+fRadius;}
}
public float Left
{
get{return fyCenter-fRadius;} //fy
set{fyCenter=value+fRadius;}
}
public virtual float Area()
{
return (float)(System.Math.PI *Math.Pow((double)fRadius,2) );
}
public 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) //virtual : 声明基类的某个成员在派生类中能被覆盖
{
fxCenter=x;
fyCenter=y;
}
}
public class Sphere:CirCle //球体,圆
{
float fCenter;
public Sphere()
{
fCenter=0;
}
public override float Area()
{
return (float)(4*Math.PI *Math.Pow((double)base.Radius ,2) ); //圆的面积
}
public new void Center(float x,float y)
{
this.Center (x,y,0);
}
public void Center(float x,float y,float z)
{
base.Center(x,y) ;
fCenter=z;
}
public float Volume() //体积
{
return (float)((4/3)*System.Math.PI*Math.Pow((double)base.Radius,3));
}
public float Front
{
get{return fCenter-base.Radius ;}
set{fCenter=value+base.Radius ;}
}
}
}
private void Button3_Click(object sender, System.EventArgs e)
{
CirCle myCircle=new CirCle();
myCircle.Radius =2;
myCircle.Center(10,2);
Response.Write("圆的面积: " +myCircle.Radius.ToString() +"<br>");
Response.Write("圆的面积: " +myCircle.Area()+"<br>");
Response.Write("圆的周长: "+myCircle.Perimeter()+"<br>" ) ;
Sphere mySphere=new Sphere();
mySphere.Radius =10;
mySphere.Center(10,20,25) ;
Response.Write("mySphere Top :"+mySphere.Top +"<br>" ) ;
Response.Write(" Left :"+mySphere.Left +"<br>" ) ;
Response.Write(" Front :"+mySphere.Front +"<br>" ) ;
Response.Write(" volume:"+mySphere.Volume() +"<br>" ) ;
Response.Write(" surface area : "+mySphere.Area()+ "<br>" ) ;
Response.Write(" circumference : "+mySphere.Perimeter() +"<br>" ) ;
}