zoukankan      html  css  js  c++  java
  • 接口的显式实现与隐式实现

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

     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的。




  • 相关阅读:
    程序员掌握的单词汇总
    Django--基础补充
    C#入门概述
    python常用模块
    软件开发经验之谈
    p7.BTC-挖矿总结
    p6.BTC-挖矿难度
    p5.BTC-网络
    p4.BTC-实现
    p3.BTC-协议
  • 原文地址:https://www.cnblogs.com/sparkleDai/p/7604988.html
Copyright © 2011-2022 走看看