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

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

    享受生活+创造
  • 相关阅读:
    vue中使用clipboard.js复制分本
    聊聊IOCP,聊聊异步编程
    dubbo RPC超时异常小结
    redis4.0 集群,jedis客户端连接配置
    Centos7 Zookeeper
    阿里云Centos 7.4 mssql-server
    Redis4.0 Cluster — Centos7
    Elasticsearch学习笔记 一
    Centos7安装ES 和 Docker搭建ES
    使用Docker快速创建.Net Core2.0 Nginx负载均衡节点
  • 原文地址:https://www.cnblogs.com/theLife/p/6858666.html
Copyright © 2011-2022 走看看