您的位置:首页 > 编程语言 > C#

c#接口使用详解

2017-05-15 21:56 190 查看

c#接口使用详解

c#中接口隐式与显示实现

c#中接口可以隐式实现、显示实现,隐式实现更常使用、显示实现较少使用
其区别在于

  1. 显示实现避免接口函数签名冲突
  2. 显示实现只可以以接口形式调用
  3. 显示实现其子类需无法继承接口
  4. 隐式实现可以撕裂调用、可以接口调用
  5. 隐式实现其子类可以继承接口的实现
  6. 隐式实现可以使用虚函数、子类可以重载

定义接口:

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();
调用

接口在继承中的使用

接口显示实现是无法在继承中保留的,若希望子类继承接口的实现需使用隐式实现。

  1. 使用隐式实现
  2. 若子类可以overwrite请使用virtual关键字修饰实现函数
  3. 可以定义abstract类继承接口,强制子类实现接口

父类实现接口:

class ShowMsgImplicit : IShowMsg
{
public virtual void Show()
{
Console.WriteLine("ShowMsgImplicit");
}
}

子类继承父类之后可以重载或者默认使用父类方法实现接口。

抽象类实现接口:

abstract class ShowMsgAbstract : IShowMsg
{
public abstract void Show();
}

子类继承抽象类必须实现抽象方法实现接口。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: