C#之接口定义与实现
2014-04-04 20:05
246 查看
今天我来讲一下关于oop中接口方面的知识,希望大家能够斧正。
oop面向对象编程(Object Oriented Programming),我们接下来将要讲解的是
高级技术,接口的定义和实现。
接口就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一个接口定义了一个协议,接口可以包含方法、属性、事件和索引。
接口成员的定义和类成员的定义也是相似的,但是也有几个重要的区别:
1.接口成员不允许使用访问修饰符(public、private、protected、或internal),所有接口成员都是公共的。
2.接口成员不能包含代码体。
3.接口不能定义成员字段。
4.接口成员不能用关键字static、virtual、abstract或sealed来定义。
5.类型定义成员是禁止的。
要隐藏继承了基接口的成员,可以用关键字new关键字来重新定义它们,例如:
![](http://img.blog.csdn.net/20140404193303281?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDE1ODI2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其效果与隐藏继承的类成员一样。
在接口中定义的属性可以确定访问块get和/或set中的哪一个能用于该属性,例如下
图:
![](http://img.blog.csdn.net/20140404193429953?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDE1ODI2Nw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
其中int属性MyInt有get和set访问器。对于访问级别有更严限制的属性来说,可以省略它们中的任意一个。
接口的实现
实现接口的类必须包含该接口的所有成员的执行代码,且必须匹配指定的签名(包
括匹配指定的get和set块),并且必须是公共的。
下面举个例子关于实现接口的是派生类如下图:
![](http://img.blog.csdn.net/20140404195712515)
接口成员也可以显式的执行,但此时该成员就只能通过接口来访问,而不能通过类
来访问。
接口成员的显式实现主要有两个用途:
1.因为显式实现接口成员时,通过类或者结构实例是不可访问接口成员的,所以允
许接口实现在类或结构的公共接口中执行。
2.显式实现接口允许用相同的签名消除接口成员的歧义。
另外接口中定义了属性,则是实现接口的类必须实现匹配的get/set访问器,如果接口中属性只包含set块,也可以给类中的属性添加get块。
关于接口的定义和实现就说这些吧,还有好多不明白的地方,希望大家指正。
下面该讲委托和事件
oop面向对象编程(Object Oriented Programming),我们接下来将要讲解的是
高级技术,接口的定义和实现。
接口就是把隐式公共方法和属性组合起来,以封装特定功能的一个集合。一个接口定义了一个协议,接口可以包含方法、属性、事件和索引。
接口成员的定义和类成员的定义也是相似的,但是也有几个重要的区别:
1.接口成员不允许使用访问修饰符(public、private、protected、或internal),所有接口成员都是公共的。
2.接口成员不能包含代码体。
3.接口不能定义成员字段。
4.接口成员不能用关键字static、virtual、abstract或sealed来定义。
5.类型定义成员是禁止的。
要隐藏继承了基接口的成员,可以用关键字new关键字来重新定义它们,例如:
其效果与隐藏继承的类成员一样。
在接口中定义的属性可以确定访问块get和/或set中的哪一个能用于该属性,例如下
图:
其中int属性MyInt有get和set访问器。对于访问级别有更严限制的属性来说,可以省略它们中的任意一个。
接口的实现
实现接口的类必须包含该接口的所有成员的执行代码,且必须匹配指定的签名(包
括匹配指定的get和set块),并且必须是公共的。
下面举个例子关于实现接口的是派生类如下图:
接口成员也可以显式的执行,但此时该成员就只能通过接口来访问,而不能通过类
来访问。
接口成员的显式实现主要有两个用途:
1.因为显式实现接口成员时,通过类或者结构实例是不可访问接口成员的,所以允
许接口实现在类或结构的公共接口中执行。
2.显式实现接口允许用相同的签名消除接口成员的歧义。
另外接口中定义了属性,则是实现接口的类必须实现匹配的get/set访问器,如果接口中属性只包含set块,也可以给类中的属性添加get块。
关于接口的定义和实现就说这些吧,还有好多不明白的地方,希望大家指正。
下面该讲委托和事件
相关文章推荐
- 详解C#接口以及实现/C# 接口中不能定义字段
- 改进C#代码之22:通过定义并实现接口替代继承
- 改进C#代码之24:通过定义并实现接口替代继承
- 详解C#接口以及实现/C# 接口中不能定义字段
- 《Effective C#》读书笔记——条目22:通过定义并实现接口替代继承<使用C#表达设计>
- 加入一个c#的接口中定义了属性,那么实现这个接口的类
- C#接口的定义、特点、实现和应用
- c#接口实现 - 第二节定义接口
- C#接口实现 - 第三节 定义接口成员
- C#之接口定义与实现
- c#接口的定义与实现
- C# IEnumUnknown 系统接口定义与实现
- 在C++中定义接口类,在C#中实现
- C# - 重定义一个接口的实现
- C#:实现接口中定义的事件
- java中接口的定义与实现
- C#版ssl链接(工行查询接口的实现)
- C#中显/隐式实现接口及其访问方法
- c#之如何正确地实现IDisposable接口
- Dubbo原理实现之代理接口的定义