关闭

Interface接口学习总结浅析

598人阅读 评论(0) 收藏 举报
分类:

Interface接口学习主要向你介绍了在编程时使用的Interface接口那么作用是什么?Interface接口可定义的类是什么?希望对你了解和学习Interface接口有所帮助。

AD:2013云计算架构师峰会课程资料下载

Interface接口的主要功能是什么呢?我们经常在编程时使用的Interface接口那么作用是什么?Interface接口可定义的类是什么?下面我们一一介绍。

1. 接口描述的是可属于任何类或结构的一组相关功能:

◆接口可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。

◆接口不能包含字段。

◆接口成员一定是公共的。

◆若要实现接口成员,类中的对应成员必须是公共的、非静态的,并且与接口成员具有相同的名称和签名。类的属性和索引器可以为接口上定义的属性或索引器定义额外的访问器。例如,接口可以声明一个带有 get 访问器的属性,而实现该接口的类可以声明同时带有 get 和 set 访问器的同一属性。但是,如果属性或索引器使用显式实现,则访问器必须匹配。

2. 接口可定义的类容:

接口可定义的类容 

隐式接口:如果类或者结构要实现的是单个接口,可以使用隐式实现。

显式接口:如果类或者结构继承了多个接口那么接口中相同名称成员就要显式实现。显式实现是通过使用接口的完全限定名来实现接口成员的。

使用显式接口目的:

1、因为显式接口成员执行体不能通过类的实例进行访问,这就可以从公有接口中把接口的实现部分单独分离开。如果一个类只在内部使用该接口,而类的使用者不会直接使用到该接口,这种显式接口成员执行体就可以起到作用。

2、显式接口成员执行体避免了接口成员之间因为同名而发生混淆。如果一个类希望对名称和返回类型相同的接口成员采用不同的实现方式,这就必须要使用到显式接口成员执行体。如果没有显式接口成员执行体,那么对于名称和返回类型不同的接口成员,类也无法进行实现。

隐式接口:

如果类实现两个接口,并且这两个接口包含具有相同签名的成员,那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。例如:

C#

  1. interface IControl  
  2.  
  3. {  
  4.  
  5. void Paint();  
  6.  
  7. }  
  8.  
  9. interface ISurface  
  10.  
  11. {  
  12.  
  13. void Paint();  
  14.  
  15. }  
  16. class SampleClass : IControl, ISurface  
  17.  
  18. {  
  19.  
  20. // Both ISurface.Paint and IControl.Paint call this method.  
  21.  
  22. public void Paint()  
  23.  
  24. {  
  25.  
  26. }  
  27.  
  28. }  

调用:可以直接调用

显式接口:

如果两个接口成员执行不同的函数,那么这可能会导致其中一个接口的实现不正确或两个接口的实现都不正确。可以显式地实现接口成员 -- 即创建一个仅通过该接口调用并且特定于该接口的类成员。这是使用接口名称和一个句点命名该类成员来实现的。例如:

C# 

  1. public class SampleClass : IControl, ISurface  
  2.  
  3. {  
  4.  
  5. void IControl.Paint()  
  6.  
  7. {  
  8.  
  9. System.Console.WriteLine("IControl.Paint");  
  10.  
  11. }  
  12.  
  13. void ISurface.Paint()  
  14.  
  15. {  
  16.  
  17. System.Console.WriteLine("ISurface.Paint");  
  18.  
  19. }  
  20. }  

调用:只能通过接口来调用。

Interface接口的基本内容就向你介绍到这里,希望对你了解和学习Interface接口有所帮助。

0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:399941次
    • 积分:5352
    • 等级:
    • 排名:第5015名
    • 原创:56篇
    • 转载:423篇
    • 译文:34篇
    • 评论:14条
    最新评论