zoukankan      html  css  js  c++  java
  • c#接口使用详解

    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();
    }
    

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

    享受生活+创造
  • 相关阅读:
    Hbase数据库简介
    v8引擎详解
    TCP、UDP和HTTP详解
    关于websocket的代码,实现发送信息和监听信息(前端 后端(node.js))
    浏览器的渲染流程
    事件的各个阶段
    回流和重绘
    Nginx入门教程
    解决浏览器跨域
    TCP三次握手
  • 原文地址:https://www.cnblogs.com/theLife/p/6858666.html
Copyright © 2011-2022 走看看