接口的显式实现与隐式实现
我们在实现接口时,常常是类继承接口,然后在接口中实现相应的方法。代码如下:
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
接口的显式实现与隐式实现相关推荐
- 33 个 JavaScript 核心概念系列(三): 显式 (名义) 与 隐式 (鸭子)类型转换
原文地址:落明的博客 一. 前言 说实话,JavaScript 的类型转换是个相当头疼的问题,无论是对于初学者还是有经验的老司机.它的难处并不在于概念多难理解,而是情况多且杂,看似相同的情况结果却又出 ...
- JavaScript高级day02-AM【函数的prototype、显式原型与隐式原型、原型链】
笔记.视频.源码:JavaScript(基础.高级)笔记汇总表[尚硅谷JavaScript全套教程完整版] 目 录 P15 15.尚硅谷_JS高级_函数的prototype 15:04 1. 函数 ...
- 三种等待方式:强制等待、显式等待、隐式等待
我们在使用selenium的时候,会遇到一种定位不到的情况,因为web页面有一个加载的过程 当页面元素未出现时,去定位肯定是定位不到的,所以我们需要用到了'等待',该如何使用等待呢,让我们一起来探讨一 ...
- 【selenium-python】显式等待和隐式等待的使用和区别
我的博客 网上教程挺多,看完还是没太理解,看了官方文档稍微理解了一些,在此记录. 部分观点为个人理解,请批判性阅读.如有错误,请指正,万分感谢. 参考: webdriver_waits When to ...
- Android显式意图和隐式意图
intent基本理解 我们都知道Android四大组件:Activity .Service.broadcast receiver 及 内容提供者. 其中,Activity .Service.broad ...
- Andriod 显式启动、隐式启动练习简析
activity_main.xml代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayou ...
- Oracle显式游标和隐式游标
游标的概念: 游标是SQL的一个内存工作区,由系统或用户以变量的形式定义.游标的作用就是用于临时存储从数据库中提取的数据块.在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处 ...
- Python Selenium显式等待和隐式等待详细说明
分享知识 传递快乐 现在的大多数的Web应用程序是使用Ajax或一些前端框架技术来完成加载页面,这样程序便不能确定某个元素何时才能完全加载出来.因不能确定元素被加载到浏览器的时间,这使得定位元素变得 ...
- scala中的隐式转换、隐式参数和隐式类
scala中的隐式转换.隐式参数和隐式类 @(SCALA)[scala] scala中的隐式转换隐式参数和隐式类 一隐式转换 1示例 2隐式转换的条件 二隐式参数 1示例 三隐式类 1示例 隐式转换是 ...
- Scala入门到精通——第十八节 隐式转换与隐式参数(一)
本节主要内容 隐式转换简介 隐式转换函数 隐式转换规则 隐式参数 1. 隐式转换简介 在Scala语言当中,隐式转换是一项强大的程序语言功能,它不仅能够简化程序设计,也能够使程序具有很强的灵活性.要想 ...
最新文章
- UVa512 - Spreadsheet Tracking
- 实验一个最小的PYTHON服务器编程
- python做数据库管理系统_python+Django+mysql+bootstrap前端,数据库一次搞定)从头教你毕设实现一个简易好看的仓储物资管理之类系统...
- 指定module_一个缺失已久的特性 — module模块
- jboss连接池,断开后自动重连功能
- 2019届互联网校招本科薪酬清单
- 【转】一些 SQLite技巧
- mysql优化 my.cnf_MySQL性能调优my.cnf详解
- php源码内网穿透,PHP DDOS源码
- MES系统软件如何在数控加工车间应用?
- html页面调用微信扫一扫功能,微信JSSDK调用微信扫一扫功能的方法
- String 和 StringBuider
- 奥斯汀页眉怎么设置_word红头文件怎么制作
- FLOW2000破解,完美长期使用
- 微信公众平台接口测试账号网址
- 使用vnc启动服务器candence相关问题
- Debian安装网易云音乐记录
- MiniLyrics, 非常不错的歌词插件
- THOMSON TG789vn 汤姆逊 tg789vn路由器配置
- 设计模式——(19)备忘录模式
热门文章
- win7+GPU运行py-faster-rcnn
- android统一错误ui展示,Android UI异常分析
- Python折半查找(二分查找)
- php导入导出xls表,TP5.0 PHPExcel 数据表格导出导入
- views 多个文件夹 netcore_优化 .net core 应用的 dockerfile
- android开发 转跳功能,如何在Android中利用Intent实现一个页面跳转功能
- dpkg: error processing package sunloginclient (--install): dependency problems - leaving unconfigur
- import 导入和from导入的区别
- SAP License:SAP系统上线时的相关检查清单
- SAP License:搽皮鞋的提示