- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章 接口、委托和事件 本章讲述的主要内容 6.1 接口 6.2 委托 6.3 事件 6.1 接口 6.1.1 接口的声明和实现 接口主要用来定义一个抽象规则,必须要有类或结构继承它并实现接口中的所有定义,否则定义的接口就毫无意义。因此,使用接口时应首先声明接口,再声明一个继承于该接口的类来实现接口中定义的成员。 1. 接口的声明 在VB中,声明接口使用Interface关键字,其语法格式为: [访问修饰符] Interface 接口名 [Inherits 基接口名] 接口成员 End Interface 6.1 接口 6.1.1 接口的声明和实现 2. 接口的实现 接口的实现需要声明一个继承于某接口的类,并在类中完成接口中所有定义(属性、方法等)的具体实现。 3. 在应用程序中使用接口 在应用程序中并不直接使用接口,而是通过继承了接口的类来实现。 6.1 接口 6.1.2 多接口继承 一个接口可以同时继承多个接口的定义,被继承的接口称为基接口。当一个接口有多个基接口时,声明语句中基接口之间应使用“,”分隔。例如: Interface ICon Inherits ICon1, ICon2 同时继承于ICon1和ICon2 End Interface 一个类也可以继承于多个接口,当类继承的多个接口中存在同名的成员时,在实现时为了区分是从哪个接口继承来的,VB建议使用显式实现接口的方法,即使用接口名称和一个句点命名该类成员。 6.1 接口 6.1.3 接口与抽象类的区别 1) 抽象类可以提供字段,它所定义的成员可以有多种可访问性,而接口只能定义公开(public)的成员,而且不能定义字段。 2) 抽象类可以为方法提供公有或默认的实现,这样子类就可以减少工作量。但是接口定义的方法却不能包含有任何实现,所有实现都需要子类来完成。 3) 抽象类的成员不一定需要子类重载,只有抽象成员才需要重载。而接口的所有成员都必须由其子类重载。 4) 一个子类只能继承于一个基类,但一个子类却可以继承于多个接口。 6.2 委托 委托(Delegate)也是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用选择结构语句(If…else、Select Case等),同时使得程序具有更好的可扩展性。 委托使程序员可以将方法的引用封装在委托的对象内,然后将该委托对象传递给可调用所引用方法的代码中,而不必在编译时知道具体将调用哪个方法。 委托不知道也不关心自己引用的对象或类,只是方法的参数类型和返回类型必须与委托的参数类型和返回类型相匹配,这使得委托完全适合“匿名”使用。也就是说,委托是一种用于封装方法的类型,也可以说是一种方法的指针或容器。利用委托开发人员可以将方法作为参数进行传递,从而实现动态调用方法的目的。 6.2 委托 6.2.1 委托的声明 前面介绍过委托也是一种类,包括指定每个方法必须提供的返回类型和参数。定义委托的语法格式为: Delegate Sub|Function 委托名( [形参列表] ) [As 返回类型] 例如,下列代码声明了一个名为Arithmetic(计算)的委托,该委托从调用语句接收2个整型形参,返回一个整型数据。 Delegate Function Arithmetic(ByVal x As Integer, ByVal y As Integer) As Integer 需要说明的是并非所有的方法都可以封装在委托中,只有当下面两个条件都成立时,方法才能被封装在委托类型中。 1) 它们具有相同的参数数目,并且类型相同,顺序相同,参数修饰符也相同。 2) 它们的返回类型相同。 6.2 委托 6.2.2 委托的实例化和调用 1. 委托的实例化 要实例化委托,就要调用该委托的构造函数,并将要与该委托相关联的方法及其对象名称作为它的参数进行传递。委托实例一旦被实例化,它将始终引用同一目标对象和方法。将委托与方法进行关联时需要使用AddressOf关键字。 例如,设已创建了上述定义的Arithmetic委托相匹配的方法Add,实例化委托的代码如下: 实例化委托,并与指定方法关联 Dim ari As New Arithmetic(AddressOf Add) 6.2 委托 6.2.2 委托的实例化和调用 2. 在应用程序中调用委托 VB为调用委托提供了专门的语法。当调用非空的、调用列表仅包含一个进入点的委托实例时,它调用列表中的方法,委托
您可能关注的文档
- Protel DXP第2章 Protel DXP基础知识.ppt
- Protel DXP第3章 Protel DXP原理图设计基础.ppt
- Protel DXP第4章 PCB设计基础.ppt
- Protel DXP第5章 原理图设计.ppt
- Protel DXP第7章 集成元件库.ppt
- Protel DXP第8章 电路仿真.ppt
- Protel DXP第9章 PCB信号完整性分析.ppt
- Protel99 SE 电路设计及应用第3章 PCB设计预备知识.ppt
- Protel99 SE 电路设计及应用第5章 电路板的布局、布线 改word03.ppt
- Protel99 SE 电路设计及应用第8章 基于multisim的电路分析.ppt
文档评论(0)