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

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

    享受生活+创造
  • 相关阅读:
    bryce1010的图像处理课程设计
    linux常用命令
    linux自动连接校园网设置
    LoadRunner12学习之路(6-8)
    LoadRunner12学习之路(1-5)
    Windows软件推荐
    LoadRunner_11破解教程完整版
    linux的SHELL编程
    菜鸡CodeFoces打卡单
    21天记完托福单词打卡
  • 原文地址:https://www.cnblogs.com/theLife/p/6858666.html
Copyright © 2011-2022 走看看