c#接口使用详解
2017-05-15 21:56
190 查看
c#接口使用详解
c#中接口隐式与显示实现
c#中接口可以隐式实现、显示实现,隐式实现更常使用、显示实现较少使用
其区别在于
- 显示实现避免接口函数签名冲突
- 显示实现只可以以接口形式调用
- 显示实现其子类需无法继承接口
- 隐式实现可以撕裂调用、可以接口调用
- 隐式实现其子类可以继承接口的实现
- 隐式实现可以使用虚函数、子类可以重载
定义接口:
interface IShowMsg { void Show(); }
隐式实现示例:
class ShowMsgImplicit : IShowMsg { public void Show() { Console.WriteLine("ShowMsgImplicit"); } }
显示实现示例:
class ShowMsgExplicit : IShowMsg { void IShowMsg.Show() { Console.WriteLine("ShowMsgExplicit"); } }
若使用:
var showMsgExplicit = new ShowMsgExplicit(); showMsgExplicit.Show();
将报错,只能使用
(showMsgExplicit as IShowMsg).Show();调用
接口在继承中的使用
接口显示实现是无法在继承中保留的,若希望子类继承接口的实现需使用隐式实现。
- 使用隐式实现
- 若子类可以overwrite请使用virtual关键字修饰实现函数
- 可以定义abstract类继承接口,强制子类实现接口
父类实现接口:
class ShowMsgImplicit : IShowMsg { public virtual void Show() { Console.WriteLine("ShowMsgImplicit"); } }
子类继承父类之后可以重载或者默认使用父类方法实现接口。
抽象类实现接口:
abstract class ShowMsgAbstract : IShowMsg { public abstract void Show(); }
子类继承抽象类必须实现抽象方法实现接口。
相关文章推荐
- C#使用有道ip地址查询接口方法实例详解
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 在C#中使用MSHTML的高级支持接口
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 在C#中使用MSHTML的高级支持接口(引自http://www.vckbase.com/document/viewdoc.asp?id=1018)
- 在C#中使用IDL文件,IDL是个接口定义文件
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- vs2005 C# 接口的使用
- [转]在C#中使用MSHTML的高级支持接口
- C#2.0 接口的实现与使用
- C#使用接口实现回调
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 使用C#查询路由接口,同时小议一些.net 2.0的诡异API
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表
- C#串口通信:MSComm控件使用详解
- 圣殿祭司:ASP.NET 2.0 开发详解——使用C#——全国购书地址一览表