打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
NET中的三种接口实现方式

.NET中的三种接口实现方式

http://www.sina.com.cn 2009年12月02日 14:08 IT168.com

  【IT168 技术文档】一般来说.NET提供了三种不同的接口实现方式,分别为隐式接口实现、显式接口实现、混合式接口实现。这三种方式各有各的特点。

  首先来看隐式接口实现,这恐怕是我们使用最多的一种接口实现,因为隐匿接口实现是.NET的默认接口实现方式。下面让我们来看一个隐式接口实现的例子:



Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

  using System;
  
internal class MyClass
  {
  
public void SomeMethod()
  {
  
// 利用接口的方式声明一个Myinplement对象
  IMyInterface iObj = new MyInplement();
  iObj.MethodA();
  
// 利用类的方式声明一个Myinplement对象
  MyInplement obj = new MyInplement();
  obj.MethodB();
  }
  }
  
public class MyInplement : IMyInterface
  {
  
#region IMyInterface Members
  
///
  
/// 利用隐式接口实现方式实现接口中的方法
  
///
  public void MethodA()
  {
  Console.WriteLine(
"a");
  }
  
///
  
/// 利用隐式接口实现方式实现接口中的方法
  
///
  public void MethodB()
  {
  Console.WriteLine(
"B");
  }
  
#endregion
  }
  
public interface IMyInterface
  {
  
void MethodA();
  
void MethodB();
  }

  上面的代码很简单,我们声明了一个接口,然后利用MyImplement类来实现接口。在实现接口的时候我们选择了隐式接口实现,即在接口中定义的方法签名前加上修饰符来定义实现方法的签名,比如public voidMethodB()。这种隐式接口实现用起来很简单,但却有一个缺点,就是它允许客户可以直接调用实现类中的方法,(即通过MyInplementobj = newMyInplement()这样的方式声明对象)而不是通过接口调用实现类中的方法(即通过的IMyInterface iObj = new MyInplement();方式来声明对象),这无疑增加了代码的耦合性和违反了面向接口编程的原则。那怎么样才能禁止客户直接调用实现类呢? 下面我们看的显式接口实现就可以。

  显式接口实现是指实现类在实现接口的方法时在方法的签名上用"接口名.方法名”的样式来定义方法名,同时在方法的签名中不允许带有修饰符,因为所有显式接口实现的方法全是private的,这是.NET为了禁止客户直接调用实现类而硬性规定的。下面我们来看显式接口实现的例子:



Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

  using System;
  
internal class MyClass
  {
  
public void SomeMethod()
  {
  
// 利用接口的方式声明一个Myinplement对象
  IMyInterface iObj = new MyInplement();
  iObj.MethodA();
  
// 利用类的方式声明一个Myinplement对象,会报错,因为MyImplement的MethodA方法是private的
  MyInplement obj = new MyInplement();
  obj.MethodB();
  }
  }
  
public class MyInplement : IMyInterface
  {
  
#region IMyInterface Members
  
///
  
/// 利用显式接口实现方式实现接口中的方法
  
///
  void IMyInterface.MethodA()
  {
  Console.WriteLine(
"a");
  }
  
///
  
/// 利用显式接口实现方式实现接口中的方法
  
/// 会报错,因为在显式接口实现时不允许带有修饰符
  
///
  public void IMyInterface.MethodB()
  {
  Console.WriteLine(
"B");
  }
  
#endregion
  }
  
public interface IMyInterface
  {
  
void MethodA();
  
void MethodB();
  }

  上面的代码中有两个地方会报错,这是因为我们在报错的地方违反了显式接口实现的约束。

wordend 相关阅读:
  • 浅谈C#中的接口问题
  • C#接口的显示和隐示的实现方法
  • C#编程技巧:读取Word的方法

  最后让我们来看混合式接口实现,混合式接口实现就是将隐式接口实现和显式接口实现搭在一起使用,下面让我们来看一个例子:



Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

  using System;
  
internal class MyClass
  {
  
public void SomeMethod()
  {
  
// 利用接口的方式声明一个Myinplement对象
  IMyInterface iObj = new MyInplement();
  iObj.MethodA();
  
// 利用类的方式声明一个Myinplement对象,不会报错,因为MyImplement的MethodA方法是public的
  MyInplement obj = new MyInplement();
  obj.MethodB();
  }
  }
  
public class MyInplement : IMyInterface
  {
  
#region IMyInterface Members
  
///
  
/// 利用显式接口实现方式实现接口中的方法
  
///
  void IMyInterface.MethodA()
  {
  Console.WriteLine(
"a");
  }
  
///
  
/// 利用隐式接口实现方式实现接口中的方法
  
///
  public void MethodB()
  {
  Console.WriteLine(
"B");
  }
  
#endregion
  }
  
public interface IMyInterface
  {
  
void MethodA();
  
void MethodB();
  }

  上面的代码中我们将MehtodB的实现改为隐式接口实现,这样MyImplement.Method的修饰符就是public的了,代码中就没有错了。

wordend 相关阅读:
  • 浅谈C#中的接口问题
  • C#接口的显示和隐示的实现方法
  • C#编程技巧:读取Word的方法
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
NET 扩展方法
Objective C实现多继承!
C#中接口的理解
.net面试题3
我理解的IoC和AOP
【有效解决】C# 报错System.StackOverflowException
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服