C语言面向对象第五章.pptx

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

第5章

接口、委托和事件

简介接口是向客户保证类或结构体行为方式的一种协定(contract)。如果说类是一组对象的模板,那么接口则是一组类的模板。委托用于将方法作为参数传递给其他方法。事件处理程序就是通过委托调用的方法。类或对象可以通过事件向其他类或对象通知发生的相关事情。

【教学目标】掌握接口的概念使用方法掌握委托的概念和使用方法掌握事件的概念和使用方法

目录5.1 接口5.2 委托5.3 事件5.4 案例

5.1 接口-接口的声明和实现接口用于描述可属于任何类或结构的一组相关功能,用interface关键字定义。定义接口的语法格式如下: [修饰符]interface接口名[:父类接口列表]{ //接口成员}

接口的声明和实现接口具有以下特性:接口是由方法、属性、事件、索引器或这四种成员类型的任意组合构成的框架,并没有描述任何对象的示例。接口不能包含常量、字段、运算符、示例构造函数、析构函数或类型。它不能包含静态成员。接口成员是自动公开的,且不能包含任何访问修饰符。类或结构实现接口时,必须实现接口的所有成员。

接口的声明和实现接口具有以下特性(续):如果基类实现接口,派生类将继承该实现。类和结构可继承多个接口。接口之间用逗号隔开,当一个类既继承一个基类,又实现多个接口时,基类放在最前面。接口自身可从多个接口继承。

接口的声明和实现【例5-1】接口的声明和实现方法示例,示例代码如下。该代码位于Chap5-1中。请参考教程中实例介绍。

显式接口实现如果类实现两个接口,并且这两个接口包含具有相同签名的成员,那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。此时,可以显式地实现接口成员,即在类中实现该接口时,使用全名(接口名.成员名)命名类成员,创建一个仅实现该接口的类成员。

显式接口实现【例5-2】显式接口实现示例,示例代码如下。该代码位于Chap5-2中。请参考教程中实例介绍。

显式接口实现显示接口成员具有以下特性:显式接口成员不能通过类的示例访问,只能通过接口的示例访问。显示接口成员实现不能使用任何修饰符

接口映射接口通过类实现,对于接口中声明的每一个成员都应该对应着累的一个成员,这种对应关系称为接口映射。实现接口的类的成员A及其所映射的接口成员B之间满足以下匹配关系:如果A和B都是方法,那么A和B的名称、类型和形参表都相同。如果A和B都是属性,则A和B的名称与类型相同。如果A和B都是事件,则A和B的名称与类型相同。如果A和B都是索引器,则A和B的类型与形参表相同。

接口映射如何确定实现接口成员的是哪个一个类成员呢?假设类C实现了接口成员I.M(I饰接口名,M是接口I的成员),则M的映射过程如下:如果类C中存与I.M匹配的显示接口成员实现的声明,那么此类成员就是I.M的实现。如果类C中不存在接口成员I.M的显示实现,则查看类C中是否存在一个与I.M相匹配的public成员声明,此成员就是I.M的实现。

5.2 委托-委托的声明和实现委托是一种引用类型,用于封装方法(函数)的引用,委托类似于C++中的函数指针;但委托是类型是面向对象的和安全和可靠的。委托的声明格式如下: [修饰符]delegate返回类型DelegateName(参数列表);(转下页)

委托的声明和实现其中,修饰符可为new、public、protected、internal和private;返回值类型和形参列表为所引用方法的返回值类型和形参列表,且形参列表的类型和顺序都要与引用方法的形参相同。对于示例方法,委托对象同时封装一个示例和该示例上的一个方法。对于静态方法,委托对象封装要调用的方法。

委托的声明和实现【例5-3】委托的实现与类的实现相同,即先示例化,再调用。以下是声明和实现委托的示例代码。该代码位于Chap5-3中。请参考教程中实例介绍。

多播委托多播委托是指引用多个方法的委托。当调用多播委托时,可以调用多个方法。若要向委托的方法列表(调用列表)中添加或移除方法,只需使用加法运算符或减法运算符(“+”或“-=”)。

多播委托【例5-4】多播委托的示例,示例代码如下。该代码位于Chap5-4中。示例代码如下:请参考教程中实例介绍。

5.3 事件对象之间的交互是通过消息传递来实现的,而事件就是对象发送的消息,用以发信号通知操作的发生。操作可能是由用户交互(例如鼠标单击)引起的,也可能是由某些其他的程序逻辑触发的。引发(触发)事件的对象叫做事件发送方。捕获事件并对其作出响应的对象叫做事件接收方。

5.3 事件在事件通信中,事件发送方并不知道哪个对象或方法将接收到(处理)它引发的事件。因此需要在发送方和接收方之间用一个纽带来联系。在C#中,使用委托作为这个纽带。以下是事件通信示意图:

5.3 事件创

文档评论(0)

优美的文学 + 关注
实名认证
内容提供者

优美的文学优美的文学优美的文学优美的文学优美的文学

1亿VIP精品文档

相关文档