• 接口的显式实现与隐式实现


    我们在实现接口时,常常是类继承接口,然后在接口中实现相应的方法。代码如下:

     interface IOutput
        {
            void output();
        }
    
        class SimpleOutput : IOutput
        {
            public void output()
            {
                Console.WriteLine("SimpleOutput .....");
            }
    
          
            
        }

    使用代码测试一下实现的结果

    class Program
        {
            static void Main(string[] args)
            {
                SimpleOutput s = new SimpleOutput();
                IOutput i = s;
                s.output();
                i.output();
                Console.ReadLine();
            }
        }

    可以看到继承接口的类s的输出s.output和接口i的输出i.output是一样的结果。

    这是很常见的接口实现方式。那如果我们这样实现呢?看下面的代码:

     interface IOutput
        {
            void output();
        }
    
        class SimpleOutput : IOutput
        {
            public void output()
            {
                Console.WriteLine("SimpleOutput .....");
            }
    
            void IOutput.output()
            {
                Console.WriteLine("IOutput...");
            }
        }
    SimpleOutput继承了Ioutput,同时实现了output和Ioutput.output的方法,那这会有什么不同呢?

    我们使用同样的测试代码,来看一结果

      class Program
        {
            static void Main(string[] args)
            {
                SimpleOutput s = new SimpleOutput();
                IOutput i = s;
                s.output();
                i.output();
                Console.ReadLine();
            }
        }

    从结果中可以看到,继承接口的s的输出s.output和接口i的输出i.output不一样了。

    s.output输出的是SimpleOutput中的output方法,而i.output输出的是IOutput.output的方法。那这是为什么呢?

    这其实就是接口的隐式实现和显式实现。

    在第一种实现中,是常见的接口实现方法,在SimpleOutput中隐式的实现了接口IOutput的Output方法。

    在第二种实现中,是在一些场合会用到的实现方法,在SimpleOutput中以IOutput.output的形式显式实现。注意,这里不可以添加public、private等修饰符,因为接口方法默认都是public的。




  • 相关阅读:
    2022.6.10 Vue框架学习 信1905
    Unity加强版或专业版,输入序列号提示,您的序列号无效
    简单又快速的格式化日期时间方法
    webstorm常用配置
    20192423 202120222 《网络与系统攻防技术》实验八实验报告
    嵌入式开发入门名词概念
    USB移动硬盘 显示打印设备和打印机
    TCP连接:SYN ACK RST UTG PSH FIN
    php 跑
    前端——html——html列表
  • 原文地址:https://www.cnblogs.com/sparkleDai/p/7604988.html
Copyright © 2020-2023  润新知