C#接口最佳理解

C#接口最佳理解

ID:38104852

大小:26.24 KB

页数:7页

时间:2019-06-06

C#接口最佳理解_第1页
C#接口最佳理解_第2页
C#接口最佳理解_第3页
C#接口最佳理解_第4页
C#接口最佳理解_第5页
资源描述:

《C#接口最佳理解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在编程中,我们经常会用到接口,那什么是接口呢?接口描述的是可属于任何类或结构的一组相关功能,所以实现接口的类或结构必须实现接口定义中指定的接口成员。接口使用interface 关键字进行定义,可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。接口的特性:1.接口类似于抽象基类,不能直接实例化接口;接口中的方法都是抽象方法,实现接口的任何非抽象类型都必须实现接口的所有成员:当显式实现该接口的成员时,实现的成员不能通过类实例访问,只能通过接口实例访问。当隐式实现该接口的成员时,实现的成员可以通过类实例访问,也可以通过接口实例访问,但是实现的成员必须是公有的。2.接口不能包含常

2、量、字段、运算符、实例构造函数、析构函数或类型、不能包含静态成员。3.接口成员是自动公开的,且不能包含任何访问修饰符。4.接口自身可从多个接口继承,类和结构可继承多个接口,但接口不能继承类。为什么不能指定接口中方法的修饰符? 接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。它们默认为公有方法。interfaceIProgram{voidFun();}classProgram:IProgram{//显式实现接口成员voidIProgram.Fun(){Console.WriteLine("IamFun.");}staticvoidMain(string[

3、]args){IProgramp=newProgram();//声明一个接口实例,但不是对接口进行实例化p.Fun();Console.Read();}}上面提到,实现接口可以显式实现和隐式实现,那么这两种实现到底有什么优缺点呢?一般情况,当类或者结构要实现的是单个接口,可以使用隐式实现。如果类或者结构继承了多个接口且接口中具有相同名称成员时,就要用到显式实现,当显式实现方式存在时,隐式实现方式就失效了。interfaceIProgram{voidFun();}interfaceIAProgram{voidFun();}classProgram:IProgram,IAProgram

4、{voidIProgram.Fun()//显式实现接口IProgram{Console.WriteLine("IamIProgramFun.");}voidIAProgram.Fun()//显式实现接口IAProgram{Console.WriteLine("IamIAProgramFun.");}//publicvoidFun()//隐式实现接口//{//Console.WriteLine("IamProgramFun.");//}staticvoidMain(string[]args){//IProgramp=newProgram();//p.Fun();//IAProgram

5、ap=newProgram();//ap.Fun();Programpro=newProgram();((IProgram)pro).Fun();((IAProgram)pro).Fun();Console.Read();}}结果为:IamIProgramFun.          IamIAProgramFun.接口的继承:接口继承和类继承不同:首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承。也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现,其次,C#中类继承只允许单继承,但是接口继承允许多继承,一个子

6、接口可以有多个父接口。接口可以从零或多个接口中继承。从多个接口中继承时,用":"后跟被继承的接口名字,多个接口名之间用","分割。被继承的接口应该是可以访问得到的,比如从private类型或internal类型的接口中继承就是不允许的。接口不允许直接或间接地从自身继承。和类的继承相似,接口的继承也形成接口之间的层次结构。interfaceIProgram{voidFun();}interfaceIAProgram:IProgram{}classProgram:IAProgram{voidIProgram.Fun(){Console.WriteLine("IamIProgramFun

7、.");}staticvoidMain(string[]args){Programpro=newProgram();((IAProgram)pro).Fun();Console.Read();}}接口的覆盖:由于接口的实现没有方法体,抽象方法也没有方法体,那么当我们在接口的实现方法里调用抽象方法时,会如何执行呢?interfaceIProgram{voidFun();}abstractclassAProgram:IProgram{publicabstractvoidA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。