zoukankan      html  css  js  c++  java
  • 当类继承多个接口具有相同的方法,怎么做?(界面明确的执行行动)

    于《接口的显式实现与隐式实现》中讲到了接口的显式实现。那有什么作用呢?我们来看一段代码。

     class Program
        {
            static void Main(string[] args)
            {
                SimpleOutput s = new SimpleOutput();
                IOutput io = s;
                ILog il = s;
                s.output();
                io.output();
                il.output();
                Console.ReadLine();
            }
        }
    
        interface IOutput
        {
            void output();
        }
    
        interface ILog
        {
            void output();
        }
    
        class SimpleOutput : IOutput, ILog
        {
            public void output()
            {
                Console.WriteLine("SimpleOutput .....");
            }
    
            void IOutput.output()
            {
                Console.WriteLine("IOutput...");
            }
    
            void ILog.output()
            {
                Console.WriteLine("ILog...");
            }
        }

    看一下这段代码的输出结果:


    从结果中能够看到,尽管都是源于SimpleOutput,可是输出了三个不同的结果。原因何在?

    在接口IOutput和ILog中,都有output方法,在SimpleOutput继承IOutput和ILog时。须要对两个接口的output方法进行实现。

    因为方法名同样,不可採用隐式实现。所以採用IOutput.output()和ILog.output()的显式实现。

    这样在IOutput io = s时。尽管io源于s的实例,可是输出的却是IOutput.output方法。相同的。ILog il = s尽管源于s的实例,可是输出的却是ILog.output方法。

    而s输出的是SimpleOutput的output方法。

    故,产生三种不同的结果。



    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    51nod乘积之和
    Dell服务器安装OpenManage(OMSA)
    Nginx反向代理PHP
    搭建haproxy
    108. Convert Sorted Array to Binary Search Tree
    60. Permutation Sequence
    142. Linked List Cycle II
    129. Sum Root to Leaf Numbers
    118. Pascal's Triangle
    26. Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4854513.html
Copyright © 2011-2022 走看看