当类继承多个接口具有相同的方法,怎么做?(界面明确的执行行动)

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

 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方法。

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



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

原文地址:https://www.cnblogs.com/zfyouxi/p/4854513.html