显式与隐式(ExplicitAndImplicit)
显式与隐式(Explicit And Implicit)
1.概念
1.1 显式
1.2 隐式
2.例子
2.1 代码
- using System;
- namespace ExplicitAndImplicit{
- //刀子
- public interface IKnife{
- void KillPeople();
- }
- //枪
- public interface IGun{
- void KillPeople();
- }
- //隐式实现
- public class WrongKillMachine:IKnife,IGun{
- public void KillPeople(){
- Console.WriteLine("切切切脑袋");
- }
- }
- //显式实现:
- //1.实现接口方法不需要加访问定义符
- //2.实现接口方法前面要加接口名.方法名,用来指定其实现的接口
- //2.实现接口方法只能被显式的调用,不能被隐式的调用:
- // 显式调用:
- public class KillMachine:IKnife,IGun{
- void IKnife.KillPeople(){
- Console.WriteLine("切切切");
- }
- void IGun.KillPeople(){
- Console.WriteLine("啪啪啪");
- }
- }
- public static class Case
- {
- public static void Begin(){
- Console.WriteLine("Design Pattern —— Explicit And Implicit:");
- //隐式实现
- WrongKillMachine w = new WrongKillMachine();
- w.KillPeople();
- //显式实现
- IKnife k = new KillMachine();
- k.KillPeople();
- IGun g = new KillMachine();
- g.KillPeople();
- }
- }
- }
2.2 结果
2.3 例子解释
2.3.1 隐式
2.3.2 显式
2.4 结合上面的例子写一个小故事
3.其他认证
3.1 关于一个类多个接口的实现既有显式也有隐式的规则(混合)
- using System;
- namespace ExplicitAndImplicit
- {
- public interface InfA{
- void Do();
- }
- public interface InfB{
- void Do();
- }
- public interface InfC{
- void Do();
- }
- public interface InfD{
- void Do();
- }
- public class Class1:InfA,InfB,InfC,InfD{
- void InfA.Do(){
- Console.WriteLine("A");
- }
- void InfB.Do(){
- Console.WriteLine("B");
- }
- public void Do(){
- Console.WriteLine("C");
- }
- }
- //测试目的是看多个接口实现是否可以部分显式、部分隐式,答案是肯定的
- //同样,显式接口必须通过接口的声明实现 比如 Interface i = new Class();
- public static class Case2_TestMultiIntegration{
- public static void Begin(){
- Utility.UnitStart(,"1.2.1 Implicit-通过隐式方式调用隐式实现的借口 Class c = new Class(); c.DoMethod();");
- Class1 c = new Class1();
- c.Do();
- Utility.UnitStart(,"1.2.2 Explicit-通过显式方式调用显式方式实现的借口 Interface i = new Class(); i.DoMethod();");
- InfA a = new Class1();
- a.Do();
- Utility.UnitStart(,"1.2.3 MixedImplicit-通过显式方式调用隐式实现的接口 Interface i = new Class(); i.DoMethod();");
- InfD d = new Class1();
- d.Do();
- }
- }
- }
3.2 结果:
4.应用原则
显式与隐式(ExplicitAndImplicit)的更多相关文章
- dll的加载方式主要分为两大类,显式和隐式链接
之前简单写过如何创建lib和dll文件及简单的使用(http://blog.csdn.net/betabin/article/details/7239200).现在先再深入点写写dll的加载方式. d ...
- 【RS】CoupledCF: Learning Explicit and Implicit User-item Couplings in Recommendation for Deep Collaborative Filtering-CoupledCF:在推荐系统深度协作过滤中学习显式和隐式的用户物品耦合
[论文标题]CoupledCF: Learning Explicit and Implicit User-item Couplings in Recommendation for Deep Colla ...
- C++ 不具有继承关系的类之间的显式,隐式转换 2013-07-11 15:41
好久没有写blog了,今天在学习c#的时候看到某一章节 讲类的隐式与显式转换.特此留笔,以供后续参考之用. 关于显式,隐式转换有些争论,说什么不建议隐式转换.但是个人认为非必要,如果有良好的基础书写基 ...
- Scala中的Implicit(隐式转换,隐式参数,隐式类)
文章来自:http://www.cnblogs.com/hark0623/p/4196452.html 转发请注明 代码如下: /** * 隐式转换 隐式参数 隐式类 */ //隐式转换 class ...
- 实例理解scala 隐式转换(隐式值,隐式方法,隐式类)
作用 简单说,隐式转换就是:当Scala编译器进行类型匹配时,如果找不到合适的候选,那么隐式转化提供了另外一种途径来告诉编译器如何将当前的类型转换成预期类型.话不多说,直接测试 ImplicitHel ...
- (转载)Android理解:显式和隐式Intent
Intent分两种:显式(Explicit intent)和隐式(Implicit intent). 一.显式(设置Component) 显式,即直接指定需要打开的activity对应的类. 以下多种 ...
- JavaScript 数据类型转换(显式与隐式)
一.数据类型 JS中有5中简单数据类型(也称为基本数据类型):Undefined.Null.Boolean.Number.String.还有一种复杂数据类型------Object,Object本质是 ...
- 【转】Android理解:显式和隐式Intent---- try catch
原文网址:http://blog.csdn.net/xiao__gui/article/details/11392987 Intent是Android初学者比较难理解的一个东西.我这里以通俗易懂的语言 ...
- 简单的interface显式和隐式的实现
一,新建接口 using System; using System.Collections.Generic; using System.Linq; using System.Web; /// < ...
随机推荐
- SpringBoot-学习笔记
启动方式 运行main方法 @SpringBootApplication public class BootApplication { public static void main(String[] ...
- (网页)JavaScript周末总结(一)
本周学习的内容总结: 1. 2章在html中使用javascript. 2. 3章Javascript的基本概念. 3. 4章变量,作用域,内存问题. 1-1:2章以下内容: 1.包含javascri ...
- Python 爬虫实例(爬百度百科词条)
爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入 ...
- coTurn 运行在Windows平台的方法及服务与客户端运行交互流程和原理
coTurn是一个开源的STUN和TURN及ICE服务项目,只是不支持Windows.为了在window平台上使用coTurn源码,需要在windows平台下安装Cygwin环境,并编译coTurn源 ...
- Percona XtraBackup 安装介绍篇
XtraBackup介绍 XtraBackup是Percona公司的开源项目,用以实现类似Innodb官方的热备份工具InnoDB Hot Backup的功能,它支持在线热备份(备份时不影响数据读写) ...
- jQuery ajax()使用serialize()提交form数据到后台
1.选中要删除的学生信息 2.点击 删除选中 按钮,把复选框中的值取出提交到后台 3.后台获取选中的id 4.前端也跟着删除数据 示例代码: 前端代码: <!DOCTYPE html> & ...
- 洗礼灵魂,修炼python(86)--全栈项目实战篇(12)—— 利用socket实现文件传输/并发式聊天
由于本篇博文的项目都很简单,所以本次开个特例,本次解析两个项目,但是都很简单的 项目一:用socket实现文件传输 本项目很简单,作为小项目的预热的,前面刚学完socket,这里马上又利用socket ...
- CSipIm断网重连崩溃原因分析
断网重连之后的操作流程 拨打电话 ->调用SipService.makeCallOptions(),先重启一遍SipService保证PjSipService的各参数正常,尤其是create参数 ...
- IIS 部署问题 404
在部署IIS环境中,偶尔会遇到 404 错误,就算以前遇到过,也因为时间久了导致大概知道是什么错了,具体解决方案觉忘了,所以留下一个记录,留给自己,也是给大家一点提醒.(注:错误信息也懒得截图了,希望 ...
- LeetCode算法题-Word Pattern(Java实现)
这是悦乐书的第202次更新,第212篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第68题(顺位题号是290).给定一个模式和一个字符串str,找到str是否完全匹配该模 ...