您的位置:首页 > 职场人生

黑马程序员_C#接口的定义与使用

2013-04-08 19:56 274 查看
------- Windows Phone 7手机开发.Net培训、期待与您交流! -------

接口是一种用来定义程序的协议,它描述可属于任何类和结构的一组相关行为。接口可由方法、属性、事件和索引器或这4种成员类型的任何组合构成,但不能包含字段。

不能实例化接口,它只能包含其成员的签名。接口既不能有构造函数也不能有字段。接口定义也不允许包含运算符重载。

接口的修饰符只能设置为public或internal,其默认的修饰符为internal(只能在同一程序集中的任何代码访问该类型或成员)。接口定义中不允许声明成员的修饰符,但接口成员默认为public,不能显示使用修饰符。

综上,接口具有以下特征:

(1)接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。

(2)不能直接实例化接口,这也是为什么接口没有构造函数的原因。

(3)接口可用包含事件、索引器、方法和属性。

(4)接口不能包含方法的实现。

(5)类和结构可从多个接口继承。

(6)接口自身可从多个接口继承。

1.C#中声明接口时,使用interface关键字:

[修饰符] interface 接口名称[:接口1,接口2,类1……]

{

接口成员;

}

例:

public interface ImyInterface //声明一个接口

{

string Name{ get; set; }

void SayHello(); //接口的成员只能声明,不能有具体的实现

}

2.使用接口(如果快速正确写出接口的所有方法:当敲完class myClass: ImyInterface

时在ImyInterface下会有一条小横线,鼠标置于上面会有提示,双击即可在类里显示所有的方法)

class myClass: ImyInterface

{

string name = " ";

public string Name //实现了接口定义的属性

{

get

{

return name;

}

set

{

name = value;

}

}

public void SayHello() //继承了接口,必须实现此接口的方法

{

Console.WriterLine("你好,我是" + Name);

}

}

class Program

{

static void Main(string[] args)

{

//定义一个接口引用,使用继承此接口的子类进行实例化

ImyInterface my = new maClass();

my.Name = "老孙";

my.SayHello();

Console.ReadKey();

}

}

为什么编写代码时需要接口这个东西呢,这是很多初学者不明白的地方,在整个项目里不写接口也没有任何问题,那接口是不是就是多余的呢,答案是:不是。

一个某某系统往往不是由一个程序员写的,而是由多个程序员互相合作编写出来的。打个比方这个某某系统是一座房子,有的程序员负责烧砖块,做门,做窗户,有的程序员负责用别的程序员做好的砖块、门、窗户建房子,共同合作建这座房子。

如果负责烧砖块的程序员烧的砖块一些大一些小,一些方一些圆,那使用砖块来建房子的程序员不是很郁闷,我什么时候用大的,什么时候用小的,哪个适合我建的房子啊,整个房子我要怎么搭建才适合啊。而接口就是为了解决这个问题,老板说了,砖块烧成10*10*10大小的,然后老板买了一台烧砖机,砖块就只能烧这个形状的,别的都烧不了,而接口就相当于这个烧砖机,强制你一定要烧这种规格的砖,这个建房子的程序员也知道该用什么砖来建房子。

所以,没有这个烧砖机是不是就不能建房子了?可以,只是建起了的房子很混乱,不牢固,效率低,而有了这个规定规格的烧砖机,就规定了烧砖的程序员不能乱来,口头规定说烧这种规格的也不可用,哪天心情不爽了乱烧那不也毁了。建房子的程序员也可以快速的根据这种规格来搭建房子,因为哪怕他有些砖还没烧出来,我也知道他就一定是烧这种规定的砖,别的他烧不了。

简而言之,接口就是一种约束,或者说一种强制协议,没有这种约束可以,只是会导致整个系统设计就很混乱,写方法的人乱写方法的名字或写错了口头规定的方法的名字,导致调用方法的人不知道要调用哪个方法去实现所要的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: