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

 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

接口的显式实现与隐式实现相关推荐

  1. 33 个 JavaScript 核心概念系列(三): 显式 (名义) 与 隐式 (鸭子)类型转换

    原文地址:落明的博客 一. 前言 说实话,JavaScript 的类型转换是个相当头疼的问题,无论是对于初学者还是有经验的老司机.它的难处并不在于概念多难理解,而是情况多且杂,看似相同的情况结果却又出 ...

  2. JavaScript高级day02-AM【函数的prototype、显式原型与隐式原型、原型链】

    笔记.视频.源码:JavaScript(基础.高级)笔记汇总表[尚硅谷JavaScript全套教程完整版] 目   录 P15 15.尚硅谷_JS高级_函数的prototype 15:04 1. 函数 ...

  3. 三种等待方式:强制等待、显式等待、隐式等待

    我们在使用selenium的时候,会遇到一种定位不到的情况,因为web页面有一个加载的过程 当页面元素未出现时,去定位肯定是定位不到的,所以我们需要用到了'等待',该如何使用等待呢,让我们一起来探讨一 ...

  4. 【selenium-python】显式等待和隐式等待的使用和区别

    我的博客 网上教程挺多,看完还是没太理解,看了官方文档稍微理解了一些,在此记录. 部分观点为个人理解,请批判性阅读.如有错误,请指正,万分感谢. 参考: webdriver_waits When to ...

  5. Android显式意图和隐式意图

    intent基本理解 我们都知道Android四大组件:Activity .Service.broadcast receiver 及 内容提供者. 其中,Activity .Service.broad ...

  6. Andriod 显式启动、隐式启动练习简析

    activity_main.xml代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayou ...

  7. Oracle显式游标和隐式游标

    游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处 ...

  8. Python Selenium显式等待和隐式等待详细说明

    分享知识  传递快乐 现在的大多数的Web应用程序是使用Ajax或一些前端框架技术来完成加载页面,这样程序便不能确定某个元素何时才能完全加载出来.因不能确定元素被加载到浏览器的时间,这使得定位元素变得 ...

  9. scala中的隐式转换、隐式参数和隐式类

    scala中的隐式转换.隐式参数和隐式类 @(SCALA)[scala] scala中的隐式转换隐式参数和隐式类 一隐式转换 1示例 2隐式转换的条件 二隐式参数 1示例 三隐式类 1示例 隐式转换是 ...

  10. Scala入门到精通——第十八节 隐式转换与隐式参数(一)

    本节主要内容 隐式转换简介 隐式转换函数 隐式转换规则 隐式参数 1. 隐式转换简介 在Scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性.要想 ...

最新文章

  1. UVa512 - Spreadsheet Tracking
  2. 实验一个最小的PYTHON服务器编程
  3. python做数据库管理系统_python+Django+mysql+bootstrap前端,数据库一次搞定)从头教你毕设实现一个简易好看的仓储物资管理之类系统...
  4. 指定module_一个缺失已久的特性 — module模块
  5. jboss连接池,断开后自动重连功能
  6. 2019届互联网校招本科薪酬清单
  7. 【转】一些 SQLite技巧
  8. mysql优化 my.cnf_MySQL性能调优my.cnf详解
  9. php源码内网穿透,PHP DDOS源码
  10. MES系统软件如何在数控加工车间应用?
  11. html页面调用微信扫一扫功能,微信JSSDK调用微信扫一扫功能的方法
  12. String 和 StringBuider
  13. 奥斯汀页眉怎么设置_word红头文件怎么制作
  14. FLOW2000破解,完美长期使用
  15. 微信公众平台接口测试账号网址
  16. 使用vnc启动服务器candence相关问题
  17. Debian安装网易云音乐记录
  18. MiniLyrics, 非常不错的歌词插件
  19. THOMSON TG789vn 汤姆逊 tg789vn路由器配置
  20. 设计模式——(19)备忘录模式

热门文章

  1. win7+GPU运行py-faster-rcnn
  2. android统一错误ui展示,Android UI异常分析
  3. Python折半查找(二分查找)
  4. php导入导出xls表,TP5.0 PHPExcel 数据表格导出导入
  5. views 多个文件夹 netcore_优化 .net core 应用的 dockerfile
  6. android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能
  7. dpkg: error processing package sunloginclient (--install): dependency problems - leaving unconfigur
  8. import 导入和from导入的区别
  9. SAP License:SAP系统上线时的相关检查清单
  10. SAP License:搽皮鞋的提示