接口是一种用来定义程序的协议,它描述可属于任何类或结构的一组相关行为。接口可由方法、属性、事件和索引器或这4 种成员类型的任何组合构成,但不能包含字段。
类和结构可以像类继承基类或结构一样从接口继承,而且可以继承多个接口。当类或结构继承接口时,它继承成员定义但不继承实现。若要实现接口成员,类中的对应成员必须是公共的、非静态的, 并且与接口成员具有相同的名称和签名。类的属性和索引器可以为接口上定义的属性或索引器定义额外的访问器。例如,接口可以声明一个带有 get 访问器的属性,而实现该接口的类可以声明同时带有 get 和 set 访问器的同一属性。但是,如果属性或索引器使用显式实现,则访问器必须匹配。
接口可以继承其他接口,类可以通过其继承的基类或接口多次继承某个接口。在这种情况下,如果将该接口声明为新类的一部分,则类只能实现该接口一次。如果没有将继承的接口声明为新类的一部分,其实现将由声明它的基类提供。基类可以使用虚拟成员实现接口成员。在这种情况下,继承接口的类可通过重写虚拟成员来更改接口行为。
说明
接口可以包含方法、属性、索引器和事件作为成员,但是并不能设置这些成员的具体值。
综上所述,接口具有以下特征。
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
不能直接实例化接口。
接口可以包含事件、索引器、方法和属性。
接口不包含方法的实现。
类和结构可从多个接口继承。
接口自身可从多个接口继承。
C#中声明接口时,使用 interface 关键字,其语法格式如下:
修饰符 interface 接口名称 :继承的接口列表
{
接口内容;
}
说明
① 声明接口时,除interface 关键字和接口名称外,其他的都是可选项。
② 可以使用 new、public、protected、internal 和 private 等修饰符声明接口,但接口成员必须走公共的。
【例1】下面的代码声明了一个接口,该接口中包含编号和姓名两个属性,还包含一个自定义方法 ShowInfo,该方法用来显示定义的编号和属性。
代码如下:
interface ImyInterface
{
string ID //编号(可读可写)
{
get;
set;
}
string Name //姓名(可读可写)
{
get;
set;
}
void ShowInfo(); //显示定义的编号和姓名
{
Console.WriteLine("编号\t 姓名");
Console.WriteLine(ID +"\t"+Name);
}
}
复制
- END -
关注小编不迷路呦~