- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)