从技术上讲接口是一组包含了函数型方法的数据结构通过这组数据结构客户代码可以调用组件对象的功能定义接口的一般形式为
[attributes] [modifiers] interface identifier [:base
list] {interface
body}[;]
说明
attributes(可选)附加的定义性信息
modifiers(可选) 允许使用的修饰符有 new 和四个访问修饰符分别是newpublicprotectedinternal private在一个接口定义中同一修饰符不允许出现多次new 修饰符只能出现在嵌套接口中表示覆盖了继承而来的同名成员The public protected internal and private 修饰符定义了对接口的访问权限
指示器和事件
identifier接口名称
baselist(可选):包含一个或多个显式基接口的列表接口间由逗号分隔
interfacebody对接口成员的定义
接口可以是命名空间或类的成员并且可以包含下列成员的签名 方法属性索引器
一个接口可从一个或多个基接口继承
接口这个概念在C#和Java中非常相似接口的关键词是interface一个接口可以扩展一个或者多个其他接口按照惯例接口的名字以大写字母I开头下面的代码是C#接口的一个例子它与Java中的接口完全一样
interface IShape {
void Draw ( ) ;
}
如果你从两个或者两个以上的接口派生父接口的名字列表用逗号分隔如下面的代码所示
interface INewInterface: IParent
IParent
{ }
然而与Java不同C#中的接口不能包含域(Field)另外还要注意在C#中接口内的所有方法默认都是公用方法在Java中方法定义可以带有public修饰符(即使这并非必要)但在C#中显式为接口的方法指定public修饰符是非法的例如下面的C#接口将产生一个编译错误
interface IShape { public void Draw( ) ; }
下面的例子定义了一个名为IControl 的接口接口中包含一个成员方法Paint
interface IControl {
void Paint( ) ;
}
在下例中接口 IInterface从两个基接口 IBase 和 IBase 继承
interface IInterface: IBase
IBase
{
void Method( ) ;
void Method( ) ;
}
接口可由类实现实现的接口的标识符出现在类的基列表中例如
class Class
: Iface
Iface
{
// class 成员
}
类的基列表同时包含基类和接口时列表中首先出现的是基类