- 1、本文档共40页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章类的高级使用面向对象的高级应用.
第九章 类的定义与使用 知识回顾:抽象类 抽象类的定义 抽象类是指定义可以包含抽象成员的类,该类中的抽象成员必须在派生类中实现,也就是说在抽象类中定义,而在派生类实现。 抽象类常常可以用来施加一些策略,以避免一些逻辑上的错误。如指定某个成员必需在派生类中实现,防止程序员忘了重写某些必需在派生类中重写的方法。 抽象类 抽象类的定义: 抽象类是指在类中创建一个或多个没有定义的方法——你给出了接口,但是留一部分没做定义,这部分要由它的继承类定义。 抽象类的更多内容 抽象类中除可包含抽象成员外,还可以包含非抽象成员,即普通成员。 抽象类只能被继承,而不能创建其实例。 在抽象类的非抽象成员中,能够调用类中的抽象成员。 当非抽象成员调用类中的抽象成员时,实际上是调用最终在实体类(派生类)中重写的方法。 抽象类的更多内容 抽象类中的非抽象成员调用抽象成员 现实世界中的接口 什么是接口 接口的定义 接口进一步强化了抽象类的概念,接口是抽象类的极端表现形式。 接口是一种完全抽象,根本不提供实现的类。可以把接口想像成“纯的”抽象类,即只包含抽象成员的抽象类。 接口中定义的所有成员都必需且只能在派生类中进行实现。 所有的接口成员都必须是公用的(public)。 接口成员不能定义为static、virtual、abstract、sealed。 什么是接口 接口的定义方式 使用interface关键字定义接口,不能声明接口成员可访问级别,接口的成员都是公有的。 什么是接口 接口的定义示例 什么是接口 接口的意义 接口的意思是所有实现这个接口的类都应该“长成这样”。 因此,接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。 例如,在自然界中,人都能吃饭。那么,就应该有一个IPerson(习惯上,接口名由 “I”开头)接口,并有一个方法叫Eat(),然后我们规定,每一个表示“人”的类,必须实现IPerson接口。这就模拟了自然界“如果你是人,则必须能吃饭”这条规则。 什么是接口 接口的使用示例 实现接口的成员不需要使用override关键字。 什么是接口 接口的使用示例 接口的更多内容 在 C# 中,只支持单根继承,即只能从一个类继承。 但 C# 支持对多个接口的继承,即能同时实现多个接口,从而间接的支持多继承。 接口的更多内容 可以用继承来把多个接口合并成一个新的接口。例子--超人: 接口的更多内容 接口的组合示例 接口的更多内容 对接口的多继承 接口的更多内容 同时从一个类和多个接口继承 当同时从类和接口继承时,继承成员的第一位置必须是类名,然后才是接口名。 接口的更多内容 实现多态性:可以分别上传到每个基类 接口的更多内容 接口的其它实现方式 在兄弟基类中隐式的实现 接口的更多内容 在接口中包含属性的声明 接口中可以包含属性的声明。 接口中包含的属性只能是它的声明,而不能有实现,即只能定义属性的签名。 在接口中定义的属性,由实体类进行实现,就像实现接口的方法一样。 接口的更多内容 接口中包含属性的定义方法 在接口中定义属性的签名时,只能定义属性的类型、能对它进行的操作。 接口的更多内容 接口中包含属性的定义方法 在接口中定义属性的签名时,只能定义属性的类型、能对它进行的操作。 接口的更多内容 接口中包含属性的定义示例 接口的更多内容 在类中实现接口中的属性 接口的好处和意义 抽象类与接口的区别 抽象类与接口的区别 练习 实现方案一:面向类的编程 实现方案二:通过抽象类实现 方案二的优点 实现方案三:通过接口实现 选抽象类还是接口呢? 后来…… 刚过了一个星期,就有人送来了新的移动存储设备DV,让我测试能不能用,我微微一笑,心想这不是小菜一碟,让我们看看面向接口编程的威力吧! 开闭原则:拥抱变化 这就是所谓面向对象设计的重要基石:开闭原则--“对扩展开放,对修改关闭”。 就是说我们开发了一个软件,应该可以对它进行功能扩展(开放),而在进行这些扩展的时候,不需要对原来的程序进行修改(关闭)! 面向接口的编程是实现开闭原则的重要方法,能够灵活运用则 “任督二脉打通”。 故事还没有结束…… 有人通知我说又有一个叫SuperStorage的移动设备要接到我们的Computer上。 设备送来后,我傻眼了,开发这个新设备的团队没有拿到我们的IMobileStorage接口,自然也没有遵照这个约定。这个设备的读、写方法不叫Read和Write,而是叫rd和wt,这下完了……不符合接口啊,插不上。 “适配器”设计模式—插上一个插座 讨论 总结 作业 在方案一中尝试实现新增的功能。并切实体会一下和方案三的区别。 示例文件 方案二和方案三,基本是一个方案(从思想层面上来说),只不过实现手段不同,
文档评论(0)