C#中显/隐式实现接口及其访问方法
2012-07-16 13:49
411 查看
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
来源:/article/5658352.html
1.隐式实现的接口
1interface IControl
2{
3 void Paint();
4}
5public class EditBox : IControl
6{
7 public void Paint()
8 {
9 Console.WriteLine("Pain method is called!");
10 }
11}
12class Test
13{
14 static void Main()
15 {
16 EditBox editbox = new EditBox();
17 editbox.Paint();
18 ((IControl)editbox).Paint();
19 Console.ReadKey();
20 }
21}
结果:
Pain method is called!
Pain method is called!
说明:从实例中我们可以看到用隐式实现的接口既可以通过类来访问,也可以通过接口来访问!
2.显式实现的接口
1interface IControl
2{
3 void Paint();
4}
5public class EditBox : IControl
6{
7 void IControl.Paint()
8 {
9 Console.WriteLine("IControl.Pain method is called!");
10 }
11}
12class Test
13{
14 static void Main()
15 {
16 EditBox editbox = new EditBox();
17 //editbox.Paint();//通过类访问会出错
18 ((IControl)editbox).Paint();
19 Console.ReadKey();
20 }
21}
结果:
1IControl.Pain method is called!
说明:从实例中我们可以看到用显式实现的接口只能通过接口来访问,如果试图通过类来访问会出错:““ConsoleApplication1.EditBox”并不包含“Paint”的定义。”
3.同时用显/隐式实现接口会怎么样?
1interface IControl
2{
3 void Paint();
4}
5public class EditBox : IControl
6{
7 void IControl.Paint()
8 {
9 Console.WriteLine("IControl.Pain method is called!");
10 }
11 public void Paint()
12 {
13 Console.WriteLine("Pain method is called!");
14 }
15}
16class Test
17{
18 static void Main()
19 {
20 EditBox editbox = new EditBox();
21 editbox.Paint();
22 ((IControl)editbox).Paint();
23 Console.ReadKey();
24 }
25}
结果:
Pain method is called!
IControl.Pain method is called!
说明:当同时用显/隐式实现接口时,显式才是真正的接口实现方法!
4.结论
在多数情况下,我们都是用隐式来实现接口,此时既可以通过类来访问,又可以通过接口来访问,而通过显式实现的接口则只能通过接口来访问,总结一下就是:当显式实现方式存在时,隐式实现方式就失效了。但这不能表示显式实现方式就不好,当一个类实现的多个接口中具有相同的方法时,用显式方式来专门实现某个接口的方法时就显得非常有用!
5.参考文章
[1] C#中的接口:http://zhenyulu.cnblogs.com/archive/2006/04/18/377705.html
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
来源:/article/5658352.html
1.隐式实现的接口
1interface IControl
2{
3 void Paint();
4}
5public class EditBox : IControl
6{
7 public void Paint()
8 {
9 Console.WriteLine("Pain method is called!");
10 }
11}
12class Test
13{
14 static void Main()
15 {
16 EditBox editbox = new EditBox();
17 editbox.Paint();
18 ((IControl)editbox).Paint();
19 Console.ReadKey();
20 }
21}
结果:
Pain method is called!
Pain method is called!
说明:从实例中我们可以看到用隐式实现的接口既可以通过类来访问,也可以通过接口来访问!
2.显式实现的接口
1interface IControl
2{
3 void Paint();
4}
5public class EditBox : IControl
6{
7 void IControl.Paint()
8 {
9 Console.WriteLine("IControl.Pain method is called!");
10 }
11}
12class Test
13{
14 static void Main()
15 {
16 EditBox editbox = new EditBox();
17 //editbox.Paint();//通过类访问会出错
18 ((IControl)editbox).Paint();
19 Console.ReadKey();
20 }
21}
结果:
1IControl.Pain method is called!
说明:从实例中我们可以看到用显式实现的接口只能通过接口来访问,如果试图通过类来访问会出错:““ConsoleApplication1.EditBox”并不包含“Paint”的定义。”
3.同时用显/隐式实现接口会怎么样?
1interface IControl
2{
3 void Paint();
4}
5public class EditBox : IControl
6{
7 void IControl.Paint()
8 {
9 Console.WriteLine("IControl.Pain method is called!");
10 }
11 public void Paint()
12 {
13 Console.WriteLine("Pain method is called!");
14 }
15}
16class Test
17{
18 static void Main()
19 {
20 EditBox editbox = new EditBox();
21 editbox.Paint();
22 ((IControl)editbox).Paint();
23 Console.ReadKey();
24 }
25}
结果:
Pain method is called!
IControl.Pain method is called!
说明:当同时用显/隐式实现接口时,显式才是真正的接口实现方法!
4.结论
在多数情况下,我们都是用隐式来实现接口,此时既可以通过类来访问,又可以通过接口来访问,而通过显式实现的接口则只能通过接口来访问,总结一下就是:当显式实现方式存在时,隐式实现方式就失效了。但这不能表示显式实现方式就不好,当一个类实现的多个接口中具有相同的方法时,用显式方式来专门实现某个接口的方法时就显得非常有用!
5.参考文章
[1] C#中的接口:http://zhenyulu.cnblogs.com/archive/2006/04/18/377705.html
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
相关文章推荐
- C#中显/隐式实现接口及其访问方法
- C#中显/隐式实现接口及其访问方法
- C#中显/隐式实现接口及其访问方法
- C#隐式/显示实现接口方法详解
- C#.NET隐式和显式接口方法实现幕后发生的故事
- C# 反射-通过继承接口实现创建对象并调用方法
- C#接口的显示实现和隐式实现
- C#接口实现方法实例分析
- C#中使用委托、接口、匿名方法、泛型委托实现加减乘除算法
- C#中接口的实现方法
- 浅谈C# 多态的魅力(虚方法,抽象,接口实现)
- .NET/C#实现识别用户访问设备的方法
- (转)判断一个字符串是否全是数字的多种方法及其性能比较(C#实现
- 详解JESD204B串行接口时钟需求及其实现方法
- 判断一个字符串是否全是数字的多种方法及其性能比较(C#实现)
- oc 面向对象特性(接口,实现,方法发送,访问成员变量)
- 能用foreach遍历访问的对象需要实现____接口或声明____方法的类型
- C#中,接口的隐式实现和显示实现
- C#中实现接口的几种方法