zoukankan
html css js c++ java
接口
//
接口
//
接口与抽象类有些相似,因为它们都提供了用来创建新类的模板.它们之间的不同在于接口不提供任何实现的
//
类成员,而抽象类可以实现派生类共用的成员.
//
比起类而言,接口更像类型.当您在一个类中实现某个特定的接口时,这个类的实例可以用于被声明为该接口的
//
参数或变量.
//
例如下面的代码为前面创建的Shape对象声明了一个接口.
using
System;
namespace
FlashCards
{
public
interface
IFigure
{
float
Top
{
get
;
set
;
}
float
Left
{
get
;
set
;
}
float
Area();
float
Perimeter();
}
/**/
///
<summary>
///
使用这个接口前,需要在下面的类中实现它
///
</summary>
public
abstract
class
Shape:IFigure
{
public
Shape()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
IFigure 成员
#region
IFigure 成员
public
abstract
float
Top
{
get
;
set
;
}
public
abstract
float
Left
{
get
;
set
;
}
public
abstract
float
Area();
public
abstract
float
Perimeter();
#endregion
}
//
覆盖抽象类成员的每一个成员定义都需要 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;
}
}
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 ;}
}
}
}
//
这个示例中的Shape抽象类实现了IFigure接口,所有从Shape派生而来的类都继承了实现的IFigure.
//
这就是说,类型CirCle和Sphere的对象是从Shape派生而来,它们能被用作IFigure类型的参数.
//
这里的关键是接口中定义的所有项必定存在于实现该接口的类中 .如果您省略了某个成员,Visual Studio
//
将产生一个编译时错误.
private
void
Button4_Click(
object
sender, System.EventArgs e)
{
//
创建一个圆
CirCle myCircle
=
new
CirCle();
myCircle.Radius
=
2
;
myCircle.Center(
10
,
2
);
//
创建一个球体
Sphere mySphere
=
new
Sphere();
mySphere.Radius
=
10
;
mySphere.Center(
10
,
20
,
25
) ;
//
显示每一种形状的相关信息
ShowShapeInfo(mySphere);
ShowShapeInfo(myCircle);
}
private
void
ShowShapeInfo(IFigure Shape)
{
//
因为Shape参数是IFigure,我们知道它有这些成员
Response.Write(
"
Shape Top :
"
+
Shape.Top
+
"
<br>
"
) ;
Response.Write(
"
Left :
"
+
Shape.Left
+
"
<br>
"
) ;
Response.Write(
"
Area :
"
+
Shape.Area()
+
"
<br>
"
) ;
Response.Write(
"
perimeter :
"
+
Shape.Perimeter()
+
"
<br>
"
) ;
}
}
//输出
Shape Top :0
Left :10
Area : 1256.637
perimeter : 62.83186
Shape Top :8
Left :0
Area : 25.13274
perimeter : 12.56637
查看全文
相关阅读:
一个小时前,美国主流媒体,头条,谷歌两位创始人突然宣布退下来,把万亿美元的帝国交给Sundar Pichai
Fox新闻报道,帮助北朝鲜使用加密货币专家被捕
看新闻,说墨西哥政府发起了一个军事行动,抓住了11月杀死9位美国人的三名嫌疑犯
黑五千万不要去商场,就像打仗一样。
Facebook 一个热搜帖,美国一个老人癌症不治最后的心愿是跟儿子喝啤酒。
这周末又参加班里同学生日party,同学父母包场2小时花费大约1000美金左右。
Google谷歌总部员工家庭活动
800年没有写博客了,今天重新开始。
iOS image processing with the accelerate framework(透明玻璃效果)
Custom View Controller Transitions and Storyboard
原文地址:https://www.cnblogs.com/furenjun/p/318418.html
最新文章
用户分析——用户特征分析(用户画像)
什么是倒排索引?
JVM核心知识体系(转)
夯实JAVA基本之一——泛型详解(2):高级进阶(转)
夯实JAVA基本之一 —— 泛型详解(1):基本使用(转)
比较并交换(compare and swap, CAS)
Java 7之基础
彻底弄清楚session是什么?
简单理解cookie/session机制(转)
3种web会话管理的方式(session)
热门文章
百度地图API:使用百度定位
LitePal
Lambda表达式
Android下的定时任务
定制自己的日志工具
使用Intent传递对象
AndroidStudio实现AIDL
git基本命令(二)
编写程序,监控手机电量,当电量小于15%时进行提示。
AndroidStudio自动导入包
Copyright © 2011-2022 走看看