- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 多态是面向对象技术中最精华的部分之一。大量的精巧软件设计方案都建立在对多态特性的巧妙应用上。 练习 * Shape类包含一个抽象方法TellMyself,用于描述自己是什么图形;每个TwoDimensionalShape都应该包含方法Area,用于计算二维图形的面积。每个ThreeDimensionalShape应该包含方法Area和方法Volume,来分别计算三维图形的表面积和体积。 定义一个Shape类型的数组,在一个循环中处理数组中的所有图形,首先描述自己是什么图形,判断每个图形是二维的还是三维的。如果一个图形是二维的,显示它的Area,如果一个图形是三维的,显示它的Area和Volume。 * Hp类、Epson类、Canon类分别表示不同类型的打印机,Output类与这3个类都有关联——根据不同类型的打印机而分别使用不同类中的print()方法。 * 引入了接口(抽象类)Printer,其中有一个方法print()。现在Output类只与接口(抽象类)Printer关联。现在Output类中只需要定义一个方法,而且,如果系统要增加新的打印机类型,如Lenovo打印机,则只需增加Lenovo类,并且让Lenovo类实现接口(继承抽象类)Printer即可,而类Output内部不需要做任何改动。 * * * 第 十一章 多 态 C#语言程序设计 河北理工大学 * 通过继承,一个类可以用作多种类型:可以用作它自己的类型、任何基类型,或者在实现接口时用作任何接口类型。这称为多态性。 C# 中的每种类型都是多态的。类型可用作它们自己的类型或用作 Object 类型,因为任何类型都自动将 Object 当作基类型。 Class Son : Parent, IMyInterface {……} Son s = new Son(); Parent p = new Son(); IMyInterface m = new Son(); * 使用基类变量引用子类对象,或者使用接口变量引用实现了此接口的对象。这其实就是多态编程。 多态编程的基本原理是:使用基类或接口变量编程。 在多态编程中,基类一般都是抽象基类,其中拥有一个或多个抽象方法,各个子类可以根据需要重写这些方法。或者应用接口,每个接口都规定了一个或多个方法,实现接口的类根据需要实现这些方法。 因此,多态的实现分为两大基本类别:继承多态和接口多态。 * 继承多态 假设某动物园管理员每天需要给他所负责饲养的狮子、猴子和鸽子喂食。我们用一个程序来模拟他喂食的过程。 首先,建立3个类分别代表3种动物。 * 饲养员用一个Feeder类来表示。由于3种动物吃的东西不一样,Feeder类就必须拥有3个喂动物的公有方法。 * 饲养员小李喂食的过程如下: static void Main(string[] args) { Monkey m = new Monkey(); Pigeon p = new Pigeon(); Lion l = new Lion(); Feeder f = new Feeder(小李); f.FeedMonkey(m); f.FeedPigeon(p); f.FeedLion(l); } * 如果动物园来了大熊猫,领导看小李工作努力,又把大熊猫交给他管理,程序如何修改? 首先在我们的程序创建一个Panda类,其次给Feeder类增加第4个方法:FeedPanda()。 万一动物园里没有鸽子了,小李就不用管理鸽子了,程序又需要怎样去修改? 这时就需要从Feeder类中删除FeedPigeon()方法。 * 这种编程方式很明显是不合理的,程序应该怎样改进? 很明显,狮子、猴子和鸽子都是一种动物,因此,可以建立一个Animal抽象基类,让狮子、猴子和鸽子从其派生出来。 应用多态的方法!! * * 由于不同的动物吃不同的食物,所以在Animal类中定义一个抽象的Eat()方法,由子类负责实现此方法。 abstract class Animal { ??? public abstract void Eat(); } * class Lion:Animal { public override void Eat(){
您可能关注的文档
最近下载
- 中铁隧道集团有限公司工程项目管理考核办法.pdf VIP
- 人教版八年级上册道德与法治全册教学课件.pptx
- 2023年高考语文复习:新高考Ⅰ卷语言文字运用Ⅰ专项练习题(含答案).docx VIP
- 香港朗文英语3a测试卷1-3单元.pdf VIP
- 目前我国国产电动执行器市场分析.pdf VIP
- 附件1:地下车库色彩规划(基础版)(1)(1).pdf VIP
- 健全会计制度声明函.docx VIP
- 通桥[2005]2221-Ⅱ 时速250公里客运专线铁路 有碴轨道后张法预应力混凝土简支箱梁(双线)(跨度31.5m、直、曲线).pdf VIP
- 一建机电实务案例500问.pdf VIP
- 压疮事件原因分析及整改措施.docx VIP
文档评论(0)