学习C#接口继承

开发 后端
接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。本文我们继续来了解C#接口继承实现的方法。

C#接口具有不变性,但这并不意味着接口不再发展。类似于类的继承性,接口也可以继承和发展。

注意:C#接口继承和类继承不同,首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承。也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现,其次,C#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。

接口可以从零或多个接口中继承。从多个接口中继承时,用":"后跟被继承的接口名字,多个接口名之间用","分割。被继承的接口应该是可以访问得到的,比如从private类型或internal类型的接口中继承就是不允许的。接口不允许直接或间接地从自身继承。和类的继承相似,接口的继承也形成接口之间的层次结构。

请看下面的C#接口继承例子:

继承C#接口实现图1 

对一个接口的继承也就继承了接口的所有成员,上面的例子中接口ITextBox和IListBox都从接口IControl中继承,也就继承了接口IControl的Paint方法。接口IComboBox从接口ITextBox和IListBox中继承,因此它应该继承了接口ITextBox的SetText方法和IListBox的SetItems方法,还有IControl的Paint方法。

一个类继承了所有被它的基本类提供的C#接口实现程序。

不通过显式的实现一个接口,一个派生类不能用任何方法改变它从它的基本类继承的接口映射。例如,在声明中:

继承C#接口实现代码2 

TextBox中的方法Paint隐藏了Control中的方法Paint,但是没有改变从Control.Paint到IControl.Paint 的映射,而通过类实例和接口实例调用Paint将会有下面的影响。

继承C#接口实现代码3 

但是,当一个接口方法被映射到一个类中的虚拟方法,派生类就不可能覆盖这个虚拟方法并且改变接口的实现函数。例如,把上面的声明重新写为:

继承C#接口实现代码4  

就会看到下面的结果:

继承C#接口实现代码5 

由于显式C#接口成员实现程序不能被声明为虚拟的,就不可能覆盖一个显式接口成员实现程序。一个显式接口成员实现程序调用另外一个方法是有效的,而另外的那个方法可以被声明为虚拟的以便让派生类可以覆盖它。例如:

继承C#接口实现代码6 

这里,从Control继承的类可以通过覆盖方法PaintControl来对IControl.Paint的实现程序进行特殊化。以上就是有关C#接口继承的介绍。

【编辑推荐】

  1. C#3.5新特性的介绍
  2. C#中DirectSound录音的使用
  3. C#扩展方法性能测试对比
  4. C#多标签浏览器功能的扩展
  5. C#标签的制作:多标签的实现
责任编辑:book05 来源: 新浪博客
相关推荐

2009-08-24 11:02:52

C#接口映射

2009-08-24 09:55:26

C#接口转换

2009-09-24 15:20:54

C#接口定义

2009-08-24 10:06:31

C#接口成员

2009-08-20 18:06:18

学习C#接口

2009-08-24 10:47:45

C#接口重实现

2009-05-13 11:50:17

C#多继承接口

2009-08-12 15:55:12

C#接口定义

2009-07-30 18:20:21

C#继承

2024-10-09 07:59:10

C#接口信息

2009-09-01 18:29:10

C#继承C#多态

2009-08-31 18:34:57

C#接口事件

2009-08-13 18:15:06

C#继承构造函数

2009-06-16 10:20:05

多继承C#

2009-08-25 10:44:08

C#接口定义接口

2009-08-24 11:20:03

C#接口

2009-08-25 10:57:09

C#接口

2009-08-31 13:18:09

C# IWebMess

2009-08-14 17:58:05

C#接口方法

2009-08-31 15:55:17

C#实现Strateg
点赞
收藏

51CTO技术栈公众号