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




  • 相关阅读:
    考研机试 45.skew数
    考研机试 39.大整数因子
    考研机试 37.小白鼠排队
    考研机试 36.中位数
    考研机试 35.最简真分式
    考研机试 30.进制转换
    软工实践第一次作业
    [CF767D] Cartons of milk
    [CF687C] The Values You Can Make
    [CCPC2020绵阳H] Hide and Seek
  • 原文地址:https://www.cnblogs.com/sparkleDai/p/7604988.html
Copyright © 2011-2022 走看看