CLR设计类型之接口(一)

写到这一节的时候,CLR设计类型就已经结束了,因为CLR要求的是有一定基础的人看的,所以我们不是从基础类型以及运算符开始的,文章从一开始就讲的是深入面向对象编程,研究C#程序的设计模式。C#面向对象编程有三个特点:封装,继承,多态。接口的实现就是实现继承

其实在开始之前说一下这两天发生的事情,前几天维护项目代码时,虽然是自己写得但是由于逻辑判断比较多,有些变量名起的也不是很有意义,在看的时候就完全忘记当初为啥要写成这样了,也是有点汗颜,所以最近就把代码整洁之道也放在了看书的目录上,今后的示例代码也会符合代码整洁之道上的一些要求去写。而不是用无意义的a,b,c去做为变量名。那么接口要做的事,也是让代码更加简洁的事情,接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。

说了这么多,那么我们用接口实现一个计算器的例子,通过这个例子来说明接口到底是如何定义,如何使用的。先看接口的定义:

 1   interface ICalculator {
 2         //通常接口命令以 I 字母开头,ICalculator 中文意思就是计算器接口
 3         //这个接口规定了一个计算器要有基本的加减乘除运算方法
 4         //加法
 5         int Add(int x,int y);
 6         //减法
 7         int Reduce(int x, int y);
 8         //乘法
 9         int Ride(int x, int y);
10         //除法
11         int Except(int x, int y);
12     }

上面的代码很简单吧,在接口中不能声明静态方法,接口中的方法不能用可见性修饰符修饰,在来看这句话:接口定义了所有类继承接口时应遵循的语法合同,也就是接口先规定好了我要实现那些方法和行为,继承我的要实现(重写)我的所有方法,并且返回值要和我相同,参数也要和我相同。否则就是违反了合同,语法就会报出错误。有了合同,类现在就像是一个建筑包工头,我只需要按照你的约定做,你让我盖十层楼,我就盖十层楼。继承接口类如下:

时间: 2024-08-13 06:14:40

CLR设计类型之接口(一)的相关文章

CLR - 设计类型

前言 好记性不如料"笔头"系列... 类型基础 基元类型.引用类型和值类型 类型基础 "运行时"要求每个类型最终都从System.Object 类型派生. 由于所有类型最终都从System.Object 派生,所以可以保证每个类型的每个对象都有一组最基本的方法.具体地说,System.Object 类型提供了下列的公共实例方法: 公共方法名称 说明 Equals 如果两个对象具有相同的值,就返回true. GetHashCode 返回对象的值的一个哈希码. ToSt

微信小程序的Web API接口设计及常见接口实现

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们设计和编写Web API平台是非常重要的,通过这个我们可以实现数据的集中控制和管理,本篇随笔介绍基于Asp.NET MVC的Web API接口层的设计和常见接口代码的展示,以便展示我们常规Web API接口层的接口代码设计.参数的处理等内容. 1.Web API整体性的架构设计 我们整体性的架构设计

接口——定义,实现接口的条件,类型与接口的关系,类型断言

1.定义 Go 语言的接口设计是非侵入式的,接口编写者无须知道接口被哪些类型实现.而接口实现者只需知道实现的是什么样子的接口,但无须指明实现哪一个接口.编译器知道最终编译时使用哪个类型实现哪个接口,或者接口应该由谁来实现. 每个接口类型由数个方法组成.接口的形式代码如下: type 接口类型名 interface{ 方法名1( 参数列表1 ) 返回值列表1 方法名2( 参数列表2 ) 返回值列表2 …} 说明: 接口类型名:使用 type 将接口定义为自定义的类型名.Go语言的接口在命名时,一般

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

设计原则之接口隔离原则

segregate   v.隔离 se 蛇  gre green格林  gate门 蛇被格林用门隔离了. 设计原则之接口隔离原则 动机:         客户不应该被强制实现他们不用的方法.应该用多个小的接口代替庞大功能全的接口. 结论:        该原则在代码设计的时候就要考虑.可以使用适配器模式将胖接口隔离. Bad Example:    缺点:         1.如果新增一个robot机器人工人,那么eat方法就是多余的了. // interface segregation pri

第二部分 设计类型:第10章 属性

第二部分 设计类型:第10章 属性

NTP精准授时核心板定制设计 安全性好 接口丰富 授时容量大

NTP精准授时核心板定制设计 安全性好 接口丰富 授时容量大 NTP精准授时核心板是我公司自主研发设计,总结和归纳了以前产品的优缺点和用户体验后优化完善的产品.已广泛应用于电力自动化,通信基站,应急通信,数字广电,轨道交通,航空航天,金融自动化领域等需要精密时钟服务的场所. 一.授时核心板模块功能特点: 1.支持IEE1588-2008协议. 2.授时精度可达ns级,背靠背授时精度优于50ns. 3.支持组播和单播传输模式. 4.支持MASTER.SLAVE模式可灵活配置,2个10/100/10

JavaSE8基础 函数的返回类型是接口

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        代码: interface Say { public abstract void sayHello(); } class Javaer implements Say{ public void sayHello() { System.out.println("Java Hello"); } } class D

扩展方法的几个实例,扩展基本类型、接口、通过反射让扩展方法使用私有成员等

.net扩展方法可以扩展很多类型,包括:基本数据类型.接口.类,等等.如果,需要扩展的类型包含私有成员,扩展方法如何运用这些私有成员呢?本篇逐一体验,包括: ■ 扩展基本数据类型■ 扩展接口■ 扩展包含私有字段的类 使用反射获取类的私有字段■ 扩展一个类的私有嵌套类 通过反射 扩展方法有几个必要前提:● 扩展方法所在的类必须是静态类● 扩展方法本身必须是静态方法● 扩展方法参数中,对类型的扩展参数前必须加this关键字 扩展基本数据类型 针对DateTime类型写一个扩展方法. public s