C#多态实例详解.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
----C#多态实例详解---- 多态是面向对象编程中三大机制之一,其原理建立在从父类继承而来的子类可以转换为其 父类这个规则之上,换句话说,能用父类的地方,就能用该类的子类.当从父类派生了很多子 类时,由于每个子类都有其不同的代码实现,所以当用父类来引用这些子类时,同样的操作而 可以表现出不同的操作结果,这就是所谓的多态. 了解什么是多态性 如何定义一个虚方法 如何重载一个虚方法 如何在程序中运用多态性 面向对象程序设计中的另外一个重要概念是多态性。在运行时,可以通过指向基类的指针, 来调用实现派生类中的方法。可以把一组对象放到一个数组中,然后调用它们的方法,在 这种场合下,多态性作用就体现出来了,这些对象不必是相同类型的对象。当然,如果它 们都继承自某个类,你可以把这些派生类,都放到一个数组中。如果这些对象都有同名方 法,就可以调用每个对象的同名方法。本节课将向你介绍如何完成这些事情。 1.清单 9-1. 带有虚方法的基类:DrawingObject.cs using System; public class DrawingObject { public virtual void Draw() { Console.WriteLine(Im just a generic drawing object.); } } 说明 清单 9-1 定义了 DrawingObject 类。这是个可以让其他对象继承的基类。该类有一个名为 Draw()的方法。Draw()方法带有一个 virtual 修饰符,该修饰符表明:该基类的派生类可 以重载该方法。DrawingObject 类的 Draw()方法完成如下事情:输出语句Im just a generic drawing object.到控制台。 2.清单 9-2. 带有重载方法的派生类:Line.cs, Circle.cs, and Square.cs using System; public class Line : DrawingObject { public override void Draw() { Console.WriteLine(Im a Line.); } } public class Circle : DrawingObject { public override void Draw() { Console.WriteLine(Im a Circle.); } } public class Square : DrawingObject { public override void Draw() { Console.WriteLine(Im a Square.); } } 说明 清单 9-2 定义了三个类。这三个类都派生自 DrawingObject 类。每个类都有一个同名 Draw()方法,这些 Draw()方法中的每一个都有一个重载修饰符。重载修饰符可让该方法在 运行时重载其基类的虚方法,实现这个功能的条件是:通过基类类型的指针变量来引用该 类。 3.清单 9-3. 实现多态性的程序:DrawDemo.cs using System; public class DrawDemo { public static int Main(string[] args) { DrawingObject[] dObj = new DrawingObject[4]; dObj[0] = new Line(); dObj[1] = new Circle(); dObj[2] = new Square(); dObj[3] = new DrawingObject(); foreach (DrawingObject drawObj in dObj) { drawObj.Draw(); } return 0; } } 说明 清单 9-3 演示了多态性的实现,该程序使用了在清单 9-1 和清单 9-2 中定义的类。在 DrawDemo 类中的 Main()方法中,创建了一个数组, 数组元素是 DrawingObject 类的对象。 该数组名为 dObj,是由四个 DrawingObject 类型的对象组成。 接下来, 初始化 dObj 数组, 由于 Line, Circle 和 Square 类都是 DrawingObject 类的 派生类,所以这些类可以作为 dObj 数组元素的类型。如果 C#没有这种功能,你得为每个 类创建一个数组。继承的性质可以让派生对象当作基类成员一样用,这样就节省了编程工 作量。 一旦数组初始化之后,接着是执行 foreach 循环,寻找数组中的每个元素。在每次循环中, dObj 数组的每个元素(对象)调用其 Draw()方法。多态性体现在:在运行时,各自调用 每个

文档评论(0)

liuxingmeng + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档