学习情景6面向对象高级应用接口、委托.doc

学习情景6面向对象高级应用接口、委托.doc

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
学习情景6面向对象高级应用接口、委托.doc

学习情景6 面向对象高级应用:接口、委托 在C#中类只能实现“单一继承”,要实现多重继承,必须使用接口。也就是说,类可以实现无限多个接口,但仅能从一个抽象(或任何其他类)继承。从抽象类派生的类仍可实现接口。 在接口中可以声明方法、属性、索引指示器和事件,接口中并不提供它们的实现。因此接口是函数成员声明的集合。如果类或结构从一个接口派生,则这个类或结构负责实现该接口中所声明的所有函数成员。一个接口可以继承多个接口,而一个类或结构可以实现多个接口。由于C#语言不支持多继承,因此,如果某个类需要继承多个类的行为时,只能使用多个接口加以说明。 委托类型,在功能上它类似C语言的函数指针,目的是通过创建代表类型对象去调用函数。使用代表类型的第一步,是从delegate类派生出一个代表类型,指明这个代表类型对象要代表的函数的返回值类型,参数的个数及类型,因此C#中的代表类型是类型安全的。 工作任务 任务一 深入理解面向对象多态:使用接口实现多态 任务二 使用接口完成薪水发放系统 任务三 使用委托实现查询学生 任务四 完成教务管理系统学生成绩的排序 技能目标 理解使用接口实现多态的好处 掌握接口的定义及实现 掌握委托的定义及实现 任务一 深入理解面向对象多态:使用接口实现多态 任务描述 利用接口提供的方法和属性,程序可以多态地处理这些完全不同类的对象。例如分别代表职工、图形、汽艇的类的对象的功能完全不同,但这些类的对象有一些通用的属性和操作,那就是它们所属的类别和对自己的描述。一个长方形类的对象为40 cm×20 cm的长方形,它所属的类别为长方形,其描述为“长度:40cm,宽度:20cm”。一个职工类的对象张峰,其描述为“姓名:张峰,基本工资:8000”。下面我们声明一个接口Ithing来提供这些通用的功能,然后声明Rectangle类,Employee类,这些类都实现接口IThing。 任务分析 (1)创建接口。创建一名为IThing的接口,该接口为所有对象提供通用功能,它有两个成员:只读Type属性和TellAboutSelf方法,Type属性返回对象的所属类别,TellAboutSelf方法返回对象的自描述。 (2)实现接口。创??Rectangle (长方形)类,该类实现IThing接口。Rectangle类还有两个属性:高和宽。创建Employee (职工)类,该类实现IThing接口,Employee类还有3个属性:Name(姓名)、Salary(基本工资)、BornDay(出生日期)。BornDay的类型为DateTime类型。 (3)创建测试程序,该程序创建一个IThing变量数组,该数组存储实现接口的各个具体类的对象的引用,利用循环结构,打印每个数组元素所引用对象的信息。 相关知识 1、接口类型 接口是一组抽象成员的集合,抽象方法是纯粹的协议,在其中没有提供默认的实现。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口声明可以声明零个或多个成员,接口的成员必须是方法、属性或索引器。接口不能包含常数、字段、运算符、实例构造函数、析构函数或类型,也不能包含任何种类的静态成员。接口本身不提供它所定义的成员的实现,接口只指定实现该接口的类或接口必须提供的成员。 ?(1) 定义 接口使用C# interface关键字来定义。接口成员不指定访问修饰符,因为所有接口成员都隐式地具有public访问权限。接口成员声明包含任何修饰符都将导致编译时错误。在这里是一个使用C#定义的自定义接口: interface ITest ??, ??? { ????????? //只有方法声明,无实现 ??? void method1(); ??????????int method2(); ????????? int method3(float); ????? } 说明: 接口只限于对方法、索引器和属性的声明。 名称通常以I开头。 当我们定义接口成员时,不需要为这个成员定义实现作用域。接口是纯粹的协议,因此也不会定义实现(留给支持的类或结构)。因此,如下版本的ITest会导致各种编译器错误: //内有大量错误! Public interface ITest { //错误!接口不能有字段! public int num1; //错误!接口不能有构造函数! public ITest() { num1=0; } //错误!接口不能提供实现! byte GetNumber(){return num1;} } ??(2)实现接口 所谓实现接口,就是该类必须实现接口所提供的成员。子类在实现接口中的方法时,不需要override关键字。如果类实现了一个接口,那么它必须在class语句之后紧接着包含“:”并指定接口名称。要理解,实

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档