Interface接口学习总结浅析

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

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接口有所帮助。

【编辑推荐】

  1. C# interface使用实例分析
  2. 浅析abstract class和interface的不同
  3. 详解abstract class和interface的本质
  4. 关于interface继承来源的讨论
  5. C# Fluent Interface概念实例浅析
责任编辑:仲衡 来源: cnblogs
相关推荐

2009-08-31 18:34:57

C#接口事件

2009-08-27 13:30:11

C# interfac

2009-08-27 14:12:02

C# interfac

2009-08-27 15:48:40

interfaceabstract cl

2009-08-27 17:11:44

C# Fluent I

2009-08-27 14:21:02

C# interfac

2009-08-27 17:50:09

interface接口

2009-08-20 18:06:18

学习C#接口

2009-08-28 11:48:32

C#静态函数

2009-09-23 17:28:55

Hibernate C

2009-07-17 10:59:59

iBATIS接口

2009-08-31 17:02:28

C#接口编程

2009-08-27 14:44:11

C# interfac

2023-03-30 07:52:03

Golang接口

2021-05-13 07:58:05

JDBC接口PreparedSta

2009-09-01 18:29:24

C#实现多个接口

2009-08-31 16:48:02

C#实现IDispos

2009-08-27 17:59:56

C#接口定义

2010-01-14 17:13:53

C++接口

2009-08-07 08:53:52

C# ICloneab
点赞
收藏

51CTO技术栈公众号