




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、接口学习指导书一:学习目标知识点知识点重要性掌握程度知识点关联接口简介1、 接口概述2、 自定义接口3、 实现接口4、 实现类与其接口之间的转型极高熟练接口与抽象类很类似,都是对一组类的规范,但在接口中不提供任何方法实现。接口是一种约束形式,只包含成员定义,不包含成员实现的内容,仅仅规定了实现该接口的一组类中必须提供的方法,从而使规范和实现得到分离。熟练掌握接口的相关知识,才能以面向接口进行编程。接口实现了多态性,使编程方式比较灵活,在以后的编程中会频繁使用接口,掌握了接口的编程,对以后分析系统,设计系统都有很大的帮助。接口继承高掌握与类的继承相似,一个接口可以从另一个接口派生,派生的接口将继
2、承父接口的所有成员。接口的运用1、面向接口编程2、接口作为方法的形参3、接口作为返回类型4、比较抽象类和接口极高熟练接口的运用是用接口来分析问题,解决问题,以面向接口的方式进行编程。接口和抽象类都可以实现多态,因此要与抽象类对比学习。另外,在学习设计模式时,会经常运用到接口。使用接口进行设计1、开闭原则2、工厂方法模式高理解即以面向接口进行编程,这是接口的具体运用。理解开闭原则和工厂方法对掌握接口的运用和以后学习的设计模式,设计原则都有很大的帮助。二:重难点知识点1、 重难点1:接口简介学习方法:1、 首先要掌握接口的概念和接口的定义。接口是一种约束形式,只包含成员定义,不包含成员实现的内容。
3、它定义了某一组类需要遵守的规则,但是接口并不关心在这些类的内部的数据状态及具体的实现细节,仅仅规定了这组类中必须提供的方法,从而使规范与实现得到分离。可简单的这样理解接口:接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口。 例如,人和车都有“跑”的方法,那么就可以定义一个接口IRun,来抽象出跑的方法。定义接口的语法:修饰符 interface <接口名>定义接口成员例1-1:需求:上述讲到的人和车的例子用接口来定义,因此可以抽象出跑的方法定义到接口中。具体如下。public interface IRunvoid Run(); 2、掌握接口的实现接口实现的语法:修
4、饰符 class <类名> :<父类名> <,接口列表>接口成员的具体实现例2-1:编写两个类,实现人和车跑的具体功能,实现上面接口Irun。/实现人跑步的类:public class Person:IRun public void Run() Console.WriteLine(“我在跑步!”);/实现车在跑的类:public class Car:IRunpublic void Run() Console.WriteLine(“车子正在运行”);3、掌握实现类和接口之间的转型向上转型:将实现类的对象转换为接口类型与子类和父类的关系相似,从“实现类”到接口的
5、向上转型是一个隐式转换,不需要用转型运算符。在“实现类”的实例中包含了接口的全部成员,因此,对象能够成功转型为接口类型。例2-2:将上面的例子中Car类和Person类对象转换为其接口类型。第一步:定义两个接口对象。第二步:定义一个Car类对象和一个Person类对象第三步:将定义好的Car类对象和Person类对象转换为接口类型。/定义两个接口对象IRun CarRun;IRun PersonRun;/定义一个Car类对象和一个Person类对象Car car=new Car();Person per=new Person();/将定义好的Car类对象和Person类对象转换为接口类型Car
6、Run=car;PersonRun=per;向下转型:接口类型转换主对应的实现类类型当许多不同的类实现同一个接口时,从接口到“实现类”的向下转型就需要执行显示的强制转换。例2-3:将例2-3中两个接口对象转换为对应的实现类。第一步:定义一个Car类对象和一个Person类对象。第二步:将例3-1中两个接口对象转换为对应的实现类/定义一个Car类对象和一个Person类对象Car car1;Person per1;将例2-2中两个接口对象转换为对应的实现类car1=(Car)CarRun;per1=(Person)PersonRun;4、总结接口的特点(1)接口不能实例化;(2)包含未实现的方法
7、声明;(3)派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);(4)接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。5、学习和使用接口的注意事项:(1)定义接口时尽量使用接口隔离原则,即一个接口只实现一个功能!例5-1:鸟类都有飞和吃东西的功能。现将其抽象到接口中定义:第一种定义方法:public interface IAnmalvoid Fly();void Eat();第
8、二种定义方式:public interface IAnmalFlyvoid Fly();public interface IAnmalEatvoid Eat();第一种定义方式把两个不同的功能定义在了同一个接口中。如果现在有一个鸵鸟要实现这个接口,那么此时,必须实现该接口的两个功能,即飞和吃的方法,但是鸵鸟是不能飞的,那这时该怎么办呢?此时就可以运用另一种方式实现,即采用接口隔离原则来定义接口,即采用第二种定义方式,一个接口只实现一个功能,当实现类需要哪个功能时就实现哪个接口。(2)接口上的方法不需要访问修饰符,因为它默认的就是public的共性问题:(1)接口中的访问权限是什么?答:访问权限
9、在接口里是无意义的。所有的接口成员都必须是 public 的。(2)接口是一种协议。其接口中的方法只有方法声明,但没有方法体。如果某个类实现该接口,那么就得为接口中所有方法填写方法体。就是具体的实现这个方法。想问一下为什么要具体实现所有的方法,如果只用到多少就实现多少那么不是更好吗?答:这是一个规范和思维习惯问题。接口是程序对功能不同,但使用方法相同的类的概括和定义,如果你的很多类要继承一个同一个接口,但又经常都不需要实现所有这个接口的所有方法或者属性,那就是你的接口设计的有问题。举个例子:比如, "手动档轿车" 这个接口,它需要有以下几个方法就能开走:方向盘、油门、刹车、
10、排档、离合器 。 福特福克斯,奇瑞 A3, 大众菠萝, 夏利 N8 这几个具体的车型相当于"类",它们都继承"手动档轿车",我会开手动档轿车,那么这些实现 "手动档轿车" 接口的随便一辆车拿给我,我都能开走。 但是你造了那么一辆车,它没有刹车、没有排档、没有离合器,然后告诉我这是一辆"手动档轿车"(继承"手动档轿车" 接口) , 我拿去,是能开走,但是一旦想停车、换档,才发现没有这几个设备(方法,属性),后果是什么? 没人规定你造的这个车不能叫"手动档轿车",但很显然别人要用
11、开手动档轿车的方法来开你这个车,十有八九会出事故。所以,编译器规定你继承了一个接口,你就必须实现它的所有成员,就像规定你造"手动档轿车",必须把方向盘、油门、刹车、排档、离合器全部装全才行。辅导视频:无 作业内容:见作业文件夹下的接口作业.doc补充阅读:无2、 重难点2:接口的运用学习方法:1、理解面向接口编程的思想。在一个面向对象的系统中,系统的各种功能是由许许多多的不同对象协作完成的。在这种情况下,各个对象内部是如何实现自己的对系统设计人员来讲就不那么重要了;而各个对象之间的协作关系则成为系统设计的关键。小到不同类之间的通信,大到各模块之间的交互,在系统设计之初都是要
12、着重考虑的,这也是系统设计的主要工作内容。面向接口编程就是指按照这种思想来编程。简单点讲就是开发系统时,主休构架使用接口,接口构成系统的骨架。2、掌握接口作为参数和返回类型的运用接口作为参数即让方法的参数为接口类型来实现接口的运用。例3-1:在例2-1和2-2中已经定义好了一个接口IRun和两个实现类Person和Car。现在要求测试类中定义一个方法来实现跑的功能。要求该方法参数为接口IRun类型。具体如下。/第一步:编写测试方法public static TestRun(IRun testR)testR.Run();在main方法中调用这个方法来实现人和车的跑的功能。具体如下。/第二步:创建
13、一个Person类的对象和一个Car类对象Person p=new Person();Car c=new Car();/第三步:调用TestRun方法实现跑的功能。TestRun(p);TestRun(c);通过这三个步骤就可以运用接口作为参数来实现不同对象跑的功能。接口作为返回类型即将接口作为方法的返回值来实现接口的运用。例3-1:在例2-1和2-2中已经定义好了一个接口Irun和两个实现类Person和Car。现在要求测试类中定义一个方法来实现跑的功能。要求该方法的返回类型为接口Irun类型。具体如下。/第一步:编写测试方法public IRun TestRun(int i)/i为1时,创
14、建Person类对象返加,否则创建Car类的对象返回。if(i=1) return new Person();elsereturn new Car();/第二步:在main方法中调用这个方法得到接口类型。具体如下。IRun personIRun=TestRun(1);/得到Person类对象的接品引用类型 IRun carIRun=TestRun(2);/得到Car类对象的接品引用类型 /第三步:运用得到的接口类型调用Run方法实现跑的功能。personIRun.Run();carIRun.Run();通过这三个步骤就可以运用接口作为返回类型来实现不同对象跑的功能。3、比较接口和抽象类1)抽象
15、类和接口很类似,这是因为它们都具有以下的特征。(1)接口和抽象类都不能被实例化。(2)接口和抽象类都包含未实现的方法,并且由实现接口或者继承抽象类的具体实现类来实现这些方法。2)接口和抽象类之间从设计角度出发又存在很多区别,表现如下:(1)接口是一种规范的体现,要求各个类之间应该遵守的标准,但是不关注具体的细节,体现了规范与实现分离的设计思想。(2)抽象类则是一种模板设计的体现,从多个子类中撮抽象形成父类,然后由各个子类进行再次扩展和改进。3)从接口和抽象类的具体应用上也存在一些区别,表现如下:(1)抽象类可以包含抽象方法和具体的方法实现,而接口只能包含未实现的方法。(2)抽象类中可以有构造函
16、数,而接口中不能有构造函数。(3)抽象类中可以有普通的成员变量,而接口中只有常驻量。(4)抽象类中的抽象方法可以使用public ,protected和默认类型进行访问控制,而接中所有的方法都必须是public,并且默认是public类型。(5)抽象类中可以包含静态成员,接口中不能包含静态成员。 (6) 实现抽象类中的抽象方法要使用override关键字,实现接口的方法不需要。共性问题:(1)当把接口删了后 程序还是照常运行,结果也一样,为什么还要用接口呢?答:接口其实可以理解是协议,建立规范.最大目的是减少代码的重复性和增加灵活性。辅导视频:无 作业内容:见作业文件夹下的接口作业.doc补充
17、阅读: 无3、 重难点3:使用接口进行设计学习方法:1、掌握开闭原则。开闭原则就是软件实体应当对扩展开放,对修改关闭”。通俗一点,也就是:软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,引入新功能。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。具体内容可参见补充阅读部分开闭原则概述.doc2、掌握工厂方法模式工厂模式概述工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品
18、对象的工厂接口,将实际创建工作推迟到子类中。工厂方法模式是简单工厂模式的进一步抽象和推广。由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。在工厂方法模式中,核心的工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。在Factory Method模式中,工厂类与产品类往往具有平行的等级结构,它们之间一一对应。工厂模式结构图工厂模式包含4个角色:抽象工厂(Creator)角色:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。具体工厂(Concrete Creator)角色:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。抽象产品(Product)角色:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。具体产品(Concrete Product)角色:这个角色实现了抽象产品角
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 畜禽育种技术创新-全面剖析
- 高速数据采集系统-全面剖析
- 社交电商裂变营销策略在2025年用户增长中的虚拟现实技术投资热点报告
- 办失业险合同范例
- 制定旅游协议合同范例
- 出口赔偿合同标准文本
- 劳动合同范例离职
- 食品行业海外市场计划
- 医疗场地出租合同范例
- 劳务费结算合同样本
- 油脂科技有限公司年产3万吨油酸项目环评可研资料环境影响
- 铁路市场营销教学大纲
- 人教版(部编版)初中语文七年级下册 爱莲说-“江南联赛”一等奖
- 护理综述论文撰写的方法的讲义课件
- 政府信息公开申请表(样表)
- 可填充颜色的地图(世界、中国、各省份)
- 爆破设计萨道夫斯基公式计算表
- 2023建筑防水工程质量鉴定技术标准
- 我国经皮冠状动脉介入治疗指南
- GB/T 13745-1992学科分类与代码
- CRH380B型动车组概述
评论
0/150
提交评论