C#接口的经典案例
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#接口的经典案例的更多相关文章
- 经典案例之MouseJack
引言:在昨天的文章<无线键鼠监听与劫持>中,我们提到今天会向您介绍一个无线键鼠的监听与劫持的经典案例,<MouseJack>:MouseJack能利用无线鼠标和键盘存在的一些问 ...
- 汇总java生态圈常用技术框架、开源中间件,系统架构及经典案例等
转自:http://www.51testing.com/html/83/n-3718883.html 有人认为编程是一门技术活,要有一定的天赋,非天资聪慧者不能及也.非也,这是近几年,对于技术这碗饭有 ...
- (zhuan) 资源|TensorFlow初学者必须了解的55个经典案例
资源|TensorFlow初学者必须了解的55个经典案例 2017-05-27 全球人工智能 >>>>>>欢迎投稿:news@top25.cn<<< ...
- 那些年,我们一起做过的KNX智能化控制经典案例!
那些年,我们一起做过的KNX经典案例! 光阴之箭已经穿越年轮,抵达2021 GVS在2008年加入KNX国际协会,成为中国首批引进KNX标准的企业,此后,还率先研发出基于KNX的核心协议栈,定标准,做 ...
- javascript的理解及经典案例
js的简介: JavaScript是一种能让你的网页更加生动活泼的程式语言,也是目前网页中设计中最容易学又最方便的语言. 你可以利用JavaScript轻易的做出亲切的欢迎讯息.漂亮的数字钟.有广告效 ...
- jQuery基础的工厂函数以及定时器的经典案例
1. jQuery的基本信息: 1.1 定义: jQuery是JavaScript的程序库之一,它是JavaScript对象和实用函数的封装, 1.2 作用: 许多使用JavaScript能实现的交 ...
- Linux运维之道(大量经典案例、问题分析,运维案头书,红帽推荐)
Linux运维之道(大量经典案例.问题分析,运维案头书,红帽推荐) 丁明一 编 ISBN 978-7-121-21877-4 2014年1月出版 定价:69.00元 448页 16开 编辑推荐 1 ...
- 经典案例:那些让人赞不绝口的创新 HTML5 网站
在过去的10年里,网页设计师使用 Flash.JavaScript 或其他复杂的软件和技术来创建网站.但现在你可以前所未有的快速.轻松地设计或创造互动的.有趣好看的网站.如何创建?答案是 HTML5 ...
- Altera OpenCL用于计算机领域的13个经典案例(转)
英文出自:Streamcomputing 转自:http://www.csdn.net/article/2013-10-29/2817319-the-application-areas-opencl- ...
随机推荐
- background-clip 背景图片做适当的裁剪
background-clip 用来将背景图片做适当的裁剪以适应实际需要. 语法: background-clip : border-box | padding-box | content-box | ...
- DOS环境下含包并引用第三方jar的java程序的编译及运行
DOS环境下含包并引用第三方jar的java程序的编译及运行 1.程序目录机构 bin:class文件生成目录 lib:第三方jar包目录 src:源程序文件目录 2.程序代码: 3.程序编译 jav ...
- Win7下MongoDB安装
一.下载MongoDB 下载地址:http://www.mongodb.org/downloads 注意:1.从2.2开始,MongoDB不再支持windows xp. 2.32位MongoDB最大支 ...
- 让ImageView可以使用gif的方法
在自己的包中添加MyGifView.java(直接复制,粘贴),读取gif资源在MyGifView中第20行读取: MyGifView.java: package com.zzw.testgifuse ...
- 为Eclipse设置背景色
1:打开Eclipse,在菜单栏找到Help—>Install new software.. 2:在打开的Work with中输入: Update Site - http://eclipse-c ...
- WPF 一个弧形手势提示动画
这是一个操作提示动画,一个小手在屏幕上按照一个弧形来回运动 <Window x:Class="LZRichMediaWall.MainWindow" xmlns=" ...
- SQL Server 数据库身份认证以及包含数据库
首先分为SQL Server 认证与Windows 身份认证. SQL Server 认证可以运行以下语句来查询 select * from sys.sql_logins 管理员可以直接修改密码,但无 ...
- Asp.Net MVC使用ViewData导致双引号被转义的解决方法
使用以下方法进行输出 @Html.Raw(ViewData["jsonString"].ToString())
- Java中如何防止内存泄漏的发生
在Java开发中我们常常会遇到内存泄漏的情况发生.那么为什么会发生内存泄漏,以及怎样去防止! 内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着. 为什么会发生 ...
- Django 学习笔记之七 实现分页
接着上篇,在上篇的基础上实现网页数据分页显示 1.打开views.py,编辑如下 #coding:utf-8from django.shortcuts import render,get_object ...