网站大量收购独家精品文档,联系QQ:2885784924

C#教程 第6章面对对象编程深入.ppt

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#面向对象编程深入 6.1 接口 6.1.1 定义接口 6.1.2 接口的实现 6.1.1 定义接口 接口(interface)主要用来控制类和结构实现特定的成员集。其中只包含方法、委托、属性、索引或事件的签名,其实现则由继承该接口的类来定义。接口可以从一个或多个基类或接口继承,若有基类,则必须是出现在第一个位置。 6.1.1 定义接口 接口成员 接口继承列表后面是接口的主体。主体由包围在大括号中的成员组成。合法的成员如下: 方法 属性 索引 事件 6.1.1 定义接口 注意: 所有的接口成员,都不能包含访问修饰符。所有成员都隐式地声明为public,因为它们要从实现接口成员所在的类的外部访问。在接口中定义的属性和索引可以有一个抽象的get访问器,或者一个抽象的set访问器,或者二者兼有。接口事件与普通事件的声明方式一样。 6.1.1 定义接口 接口与类 接口的定义很像类或结构,它定义了类必须实现的行为类型的特征,相当于一份使用者和实现者之间的合同。接口可以看做只包含抽象函数的纯抽象类。接口最终还是需要由类(或者结构)来实现,也就要求类要实现接口的抽象函数成员,这与派生类保证要实现它的基类的抽象函数一样。所以接口是通过动态捆绑函数调用纯抽象的基类的替代方式。 6.1.1 定义接口 即使接口和抽象类在句法和语义上紧密相关,但它们仍有一个重要的区别:接口只能包含抽象函数、抽象属性和抽象索引,而抽象类还可能包含数据成员,以及完全实现的函数、属性和索引。也正是如此,多重接口才不会像多重继承那样存在出现问题的可能性。 一个类最多可以具有一个基类,但可以具有无限个接口。 6.1.2 接口的实现 接口自身并不包含任何实现代码,落实这种定义了的“合同”的任务最终落到了类(或结构)身上。在C#中,实现接口的方式有两种: 隐式实现 显式实现 6.1.2 接口的实现 显式实现的主要用途是在有多个接口继承,并且两个或多个接口使用了同一个名称声明成员的场合。要执行显式实现,类中需要使用它的完全限定名来实现接口成员,而且在调用时,必须将类的对象实例转换成单独的接口类型。 对于隐式实现而言,它和直接由基类产生派生类的方式很相似。 接口示例代码 示例代码 讲解课本141页示例6-1 6.2 迭代器 6.2.1 迭代器的定义 6.2.2 迭代器的实现 6.2.1 迭代器的定义 迭代器(Iterator)的是一个产生值的有序序列的语句块,通过它能按照指定的顺序来访问一个集合中的所有元素。其实现的原理与某些特定的接口密切相关。 6.2.1 迭代器的定义 C#的foreach语句能够列举出一个可枚举(enumerable)集合的所有元素。为了可枚举,这个集合必须具有一个无参数GetEnumerator方法,并返回一个enumertor(枚举器)。 相比for循环而言,foreach更加安全,不会因为循环边界控制不好而产生错误。 6.2.1 迭代器的定义 例如在示例程序6-1中: ArrayList MoveObjs = new ArrayList(); …… //多态性的体现 foreach (IMoveable Moveable in MoveObjs) { //使用接口调用对象的方法 } 其中,MoveObjs定义为ArrayList类型,然后使用foreach语句列出所有元素。 6.2.1 迭代器的定义 一般情况下,枚举器是很难实现的,但使用迭代器就大大地简化了。.NET中使用了Iterator模式的思想:集合对象只负责维护各个元素,而对元素的访问则通过定义一个新的枚举器对象来进行;枚举器对象负责获取集合中的元素,并允许按照特定的顺序访问元素,于是,与枚举器相关联的集合便是可枚举集合。 6.2.1 迭代器的定义 迭代器是一个产生值的有序序列的语句块,它的作用是按照指定的顺序来访问一个集合中的所有元素。定义包括: 1)迭代器是可枚举类型的一个方法成员,该成员可以是方法、属性的get访问函数,以及重载的操作符; 2)迭代器的返回类型必须为接口IEnumerable、 IEnumerableT、IEnumerator 、IEnumeratorT中的一个(对于泛型接口,还可以是它们的构造类型); 6.2.1 迭代器的定义 3) 迭代器的执行代码中应出现yield return语句或 yield break语句。 yield return和 yield break

文档评论(0)

小教资源库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档