C#接口(interface)实例子(简单而经典)2008/12/04 10:04using System;
using System.Collections.Generic;
using System.Text;
using System.Threading; namespace AppTest
{
class Demo_interface
{
static void Main(string[] args)
{
//使用(注意,这里是使用接口 IPrint,下面是不同的实例,获得不同功能)
IPrint I;
I = new A(); //实例化 A,将打印出 A
I.Print();
I = new B(); //实例化 B,将打印出 B
I.Print();
Thread.Sleep(3 * 1000); //暂停3秒,看打印结果
}
} //定义接口,定义后不需要改变,需要不同功能,继承时扩展即可
interface IPrint
{
//接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;
//支持多继承;可以用于支持回调;可以作用于值类型和引用类型;C#中不能包含任何静态成员
//不能被直接实例化,可以通过继承实现其抽象方法。 void Print();//只定义,不实现 //IPerson(); //错误
//string name; //错误
//public void GetIDcard(); //错误
//void GetName(); //正确
//void GetAge(string s); //正确
//int GetHeight(); //正确 } //A 继承接口
class A : IPrint
{
//实现接口方法,必须有,
//当然还可以再添加其它的字段、属性、方法
public void Print()
{
System.Console.WriteLine("A");
}
} //B 继承接口
class B : IPrint
{
public void Print()
{
System.Console.WriteLine("B");
}
}
} //在这个例子中,IPrint 接口中定义了Print方法,但没有实现方法体.
//类A和类B都继承了IPrint接口,并且实现了不同的Print方法.
//在Main 中调用A\B,获得不同的打印结果 =====================================
写的不错,不过这个例子还缺少一部分,人家可以说我可以在基类上定义Print(),PrintPreview() 2个虚函数,让后续不同打印机的类继承这个基类,override 虚函数,然后通过基类指针一样可以实现这个功能。
如果你这么说,如果要给HP打印机和IBM打印机增加一个新功能如Scan(),如果用基类虚函数就得重新修改基类,基类修改会影响到所有继承他的类,系统成型后修改基类是非常危险的,而用接口只需让HP的,IBM的打印类再继承一个IScan接口就行了,不会影响到其他类,这就是接口优越于虚函数的地方。
五大面向对象设计原则
单一职责原则
2. 开放封闭原则
3. 里氏替换原则
定义:如果对于类型S的每一个对象o1,都有一个类型T的对象o2,使对于任意用类型T定义的程序P,
  将o2替换为o1,P的行为保持不变,则称S为T的一个子类型。
4. 依赖倒置原则
5. 接口隔离原则

  

C#接口的经典案例的更多相关文章

  1. 经典案例之MouseJack

    引言:在昨天的文章<无线键鼠监听与劫持>中,我们提到今天会向您介绍一个无线键鼠的监听与劫持的经典案例,<MouseJack>:MouseJack能利用无线鼠标和键盘存在的一些问 ...

  2. 汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等

    转自:http://www.51testing.com/html/83/n-3718883.html 有人认为编程是一门技术活,要有一定的天赋,非天资聪慧者不能及也.非也,这是近几年,对于技术这碗饭有 ...

  3. (zhuan) 资源|TensorFlow初学者必须了解的55个经典案例

    资源|TensorFlow初学者必须了解的55个经典案例 2017-05-27 全球人工智能 >>>>>>欢迎投稿:news@top25.cn<<< ...

  4. 那些年,我们一起做过的KNX智能化控制经典案例!

    那些年,我们一起做过的KNX经典案例! 光阴之箭已经穿越年轮,抵达2021 GVS在2008年加入KNX国际协会,成为中国首批引进KNX标准的企业,此后,还率先研发出基于KNX的核心协议栈,定标准,做 ...

  5. javascript的理解及经典案例

    js的简介: JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言. 你可以利用JavaScript轻易的做出亲切的欢迎讯息.漂亮的数字钟.有广告效 ...

  6. jQuery基础的工厂函数以及定时器的经典案例

    1. jQuery的基本信息:  1.1 定义: jQuery是JavaScript的程序库之一,它是JavaScript对象和实用函数的封装, 1.2 作用: 许多使用JavaScript能实现的交 ...

  7. Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)

    Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编   ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...

  8. 经典案例:那些让人赞不绝口的创新 HTML5 网站

    在过去的10年里,网页设计师使用 Flash.JavaScript 或其他复杂的软件和技术来创建网站.但现在你可以前所未有的快速.轻松地设计或创造互动的.有趣好看的网站.如何创建?答案是 HTML5 ...

  9. Altera OpenCL用于计算机领域的13个经典案例(转)

    英文出自:Streamcomputing 转自:http://www.csdn.net/article/2013-10-29/2817319-the-application-areas-opencl- ...

随机推荐

  1. ADO.NET笔记——利用Command对象的ExecuteScalar()方法返回一个数据值

    相关知识: 有些SQL操作,例如SUM,只会从数据库返回一个数据值,而不是多行数据 尽管也可以使用ExecuteReader()返回一个DataReader对象,代表该数据值,但是使用Command对 ...

  2. background-clip 背景图片做适当的裁剪

    background-clip 用来将背景图片做适当的裁剪以适应实际需要. 语法: background-clip : border-box | padding-box | content-box | ...

  3. 匹配一级分类和二级分类 名字和url 里面有玄机

    1:要匹配的html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:// ...

  4. 转:关于JAVA多线程同步

    转:http://lanvis.blog.163.com/blog/static/26982162009798422547/ 因为需要,最近关注了一下JAVA多线程同步问题.JAVA多线程同步主要依赖 ...

  5. ASP 连接 MySQL 数据库两种方法

    一般都是用myodbc来连接.首先,在系统中安装 Mysql 的ODBC数据库驱动.如安装稳定版本是3.51.下载地址是:http://dev.mysql.com/downloads/connecto ...

  6. Mysql主从同步(复制)

    目录: mysql主从同步定义      主从同步机制 配置主从同步      配置主服务器      配置从服务器 使用主从同步来备份      使用mysqldump来备份      备份原始文件 ...

  7. BI的核心价值[转]

    BI的核心价值是辅助决策,从一个洁净的数据源中自动提取有价值的数据进行分析,从而成为重要商业决定的决策基础.但在国内,洁净的数据源不易得到,很多情况下都需要进行数据清洗,所以BI的应用受到很大程度的抑 ...

  8. Android开发——AsyncTask详解

    android提供AsynvTask,目的是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的. Android为了降低开发难度,提供了AsyncTask.Asyn ...

  9. 序列化form表单内容为json对象

    SourceCode: ; (function ($) { $.fn.extend({ serializeJson: function () { var json = {}; $(this.seria ...

  10. iOS 进阶 第三天(0326)

    0326 Xib:描述软件界面,轻量级,一般用来描述局部界面 Xib的获取,如下图所示: xib在我们开发的时候叫xib,但如果运行在我们手机里会生成nib.所以xib和nib两种方法来访问xib