博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口的显式实现与隐式实现
阅读量:4700 次
发布时间:2019-06-09

本文共 1521 字,大约阅读时间需要 5 分钟。

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

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

转载于:https://www.cnblogs.com/sparkleDai/p/7604988.html

你可能感兴趣的文章
制作日历组件,点击出来一个弹窗
查看>>
2.6 wpf标记扩展
查看>>
一些科研中经常用到的工具
查看>>
并发编程-concurrent指南-原子操作类-AtomicInteger
查看>>
Joda-Time 简介
查看>>
【思维】Kenken Race
查看>>
Python基础第二十天:线程
查看>>
MVC中用Jquery、JS和Ajax 实现分页 存储过程是用mysql写的。
查看>>
APIO 2014 回文串(Manacher+后缀自动机+倍增)
查看>>
类的实例
查看>>
Git 更安全的强制推送,--force-with-lease
查看>>
Vue.js入门
查看>>
php中NULL、false、0、" "有何区别?
查看>>
从键盘读取数据,回车才能显示的问题
查看>>
[补档]Cube
查看>>
UESTC 914 方老师的分身I Dijkstra
查看>>
NumPy基础操作(1)
查看>>
如何解决cellIndex在IE下兼容性问题
查看>>
ASP.NET:关于.net中的runat
查看>>
Flash 环境 全屏效果
查看>>