C#面向对象编程深入.ppt

C#面向对象编程深入.ppt

ID:40392301

大小:776.50 KB

页数:49页

时间:2019-08-01

C#面向对象编程深入.ppt_第1页
C#面向对象编程深入.ppt_第2页
C#面向对象编程深入.ppt_第3页
C#面向对象编程深入.ppt_第4页
C#面向对象编程深入.ppt_第5页
资源描述:

《C#面向对象编程深入.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章C#面向对象编程深入本章要点8.1接口8.2委托8.3事件8.4匿名方法8.1接口8.1.1定义接口8.1.2接口的实现8.1接口概述定义接口的语法如下:[]interface[:]在关键字之前,包含一个访问修饰符,后面紧跟着接口标识符。[:]可选部分,用于指定接口继承的父接口列表,接口允许多继承,所以从理论上讲,一个接口可继承无数个接口。

2、习惯上,接口标识符以大写字母I开头。因为,接口可以强制类实现抽象成员,所以接口标识符通常以_able结尾。8.1.1定义接口接口成员接口继承列表后面是接口的主体。主体由包围在大括号中的成员组成。合法的成员如下:方法属性索引事件8.1.1定义接口注意:所有的接口成员,都不能包含访问修饰符。所有成员都隐式地声明为public,因为它们要从实现接口成员所在的类的外部访问。在接口中定义的属性和索引可以有一个抽象的get访问器,或者一个抽象的set访问器,或者二者兼有。接口事件与普通事件的声明方式一样。8.1.1定

3、义接口接口与类接口的定义很像类或结构,它定义了类必须实现的行为类型的特征,相当于一份使用者和实现者之间的合同。接口可以看做只包含抽象函数的纯抽象类。接口最终还是需要由类(或者结构)来实现,也就要求类要实现接口的抽象函数成员,这与派生类保证要实现它的基类的抽象函数一样。所以接口是通过动态捆绑函数调用纯抽象的基类的替代方式。8.1.1定义接口即使接口和抽象类在句法和语义上紧密相关,但它们仍有一个重要的区别:接口只能包含抽象函数、抽象的属性和抽象的索引,而抽象类还可能包含数据成员,以及完全实现的函数、属性和索引

4、。也正是如此,多重接口才不会像多重继承那样存在出现问题的可能性。如此一来,得到一个结论:一个类最多可以具有一个基类,但可以具有无限个接口。8.1.2实现接口接口自身并不包含任何实现代码,落实这种定义了的“合同”的任务最终落到了类(或结构)身上。在C#中,实现接口的方式有两种:隐式实现显式实现例子:ExplicitInterface.sln8.1.2实现接口显式实现的主要用途是在有多个接口继承,并且两个或多个接口使用了同一个名称声明成员的场合。要执行显式实现,类中需要使用它的完全限定名来实现接口成员,而且在

5、调用时,必须将类的对象实例转换成单独的接口类型。也就是说,要把类对象引用强制转换为接口类型来获取接口的引用。一旦有了接口的引用,我们就可使用点号来调用接口的方法。对于隐式实现而言,它和直接由基类产生派生类的方式很相似。例子:InterfaceExample.sln8.2委托8.2.1引例8.2.2定义委托8.2.3实例化委托8.2.4通过委托调用方法8.2.5多重委托8.2委托概述编写源代码时,如果我们只知道特定的位置必定发生某动作,并不知道它的具体实现过程,就可以用委托。C#的委托是一个类型安全方法引用

6、,可以把引用存储为函数的类型。通过委托,程序能够在运行时刻动态地调用不同的方法。委托最重要的作用是建立支持事件的基础结构。8.2.1引例例子:在一个拥有多种降温设备(例如:电力空调、干冰降温机、气动降温机等)的生物实验室里,因为要完成某项试验,要求室内温度低于某个临界温度值。可以想见,如果实验室内温度显著升高或者达到某个较高值,就必须启用某些降温设备,来控制室内温度的升高。为此,就要求控制用的软件系统必须在适当的时候启用适当的降温设备。8.2.1引例为此,设计的控制软件可以尝试采用下面这两种方式来实现:软

7、件驱动各个降温设备经常地测量室内温度,根据温度变化,各个降温设备自动启用。使用一个监视室内温度的模块,当温度变化时,就启动合适的降温设备。8.2.1引例这两种方式都有其弱点。在第一种方式中,如果测量的频率太频繁,将耗费资源,影响软件性能,但如果测量次数太少,又可能会漏掉某些突然变化的情况,导致错过降温时机,所以不宜采用;第二种方式面临的问题就是:对于不同的降温设备,要使用不同的控制方法,对于编程而言,会导致过于复杂,并难以维护。8.2.1引例要解决这个问题,推荐使用委托。委托与抽象方法一样,它指定了方法的

8、返回类型和形式参数类型,但没有指定具体的实现过程,只要这些方法与委托的签名(返回类型及形式参数)相同。同一个委托在运行期间可以表示不同的方法实现过程。只是在运行时,为委托赋一个适当的方法,当调用此委托时,它将执行此方法实际所封装的代码。8.2.2定义委托委托定义了方法的返回类型和参数类型,也创建了一种新类型,每个使用委托的方法都必须提供。委托也是一个类,它派生于基类System.Delegate。和其他类一样,必须首先定义委托

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。