面向对象的多态特性.docVIP

  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文档。上传文档
查看更多
面向对象的多态特性

面向对象的多态特性 2010-09-01 11:35 分类:计算机技术 昨天有个一个死胖子程序员,问了我个这样的问题: 如果 Son类 继承Father类,那么 Father para new Son ; 和Son para new Son ;有什么区别? 我回答说:我滴个乖乖啊,这是多态的精髓啊。 他又问:什么是多态? 我回答说:我滴天妈来!这是面向对象的重要特性啊。 在此,我将用一个简单的例子,解释一下多态特性,希望能给胖子和其他正在使用面向对象程序设计语言写程序而不动多态的程序员一些帮助。言归正传! 示例语言的选择:C++语言可悲的地方是,其对象本身并不支持面向对象编程,必须用其指针或引用来完成,而Java语言的函数又全都是虚函数。二者都不具代表性,这里选取C#,这也是一门有国际标准的语言。至于时下里正流行的一些弱类型语言,请注意,不是没有多态,而是生来就带的多态。只是程序员不用做,解释器都帮你干了。声明一个变量,诸如什么 var para; dim para ;更有甚者,前缀$即可,$para; 这些para本身具有多态性,它可以摇身一变,成为你想要的类型,尽管有时候怎么变的和什么时候变的你都不知道。 示例说明:例子是为了让大家明白道理的,所以写的简单些。这个例子本身并不能说明多态的好处,但是你把程序的规模稍微想大一些,则不难理解其优越性。 程序示例:(除了主函数外,代码复制可用) using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Polymorphy class Geometry//几何类 public virtual int getArea return 0; class Cycle : Geometry//圆类 private int radius; public Cycle int para this.radius para; public /*new*/ int getArea return int 3.1415 * this.radius; class Retangle : Geometry//矩形类 private int width; private int length; public Retangle int para1,int para2 this.width para1; this.length para2; public /*new*/ int getArea return this.length * this.width; class Program //为了说明问题,我们假象一下是封装好的DLL文件的主函数,我们只能往里传一个参数,除此之外对这个模块里面是什么一概不知。 static void DLLMain Geometry para //这个形参类型足以秒杀 多态 了,看懂这里立刻就拿下它了 //因为这一句代码相当于:Geometry para 传进来的实参; //做了一大堆事儿 。。。 para.getArea ; //又做了一大堆事儿。。。 示例到这里就结束了,我们的目的是求一个几何图形的面积。不管将来来个什么几何图形,只要它继承Geometry类,并隐藏或者覆盖其函数getArea ,那么我们只需实例化一个此类的对象作为上述DLL的参数即可做那两大堆事儿了。没必要要求那个DLL开发者拆开重做(这也实在是太愚笨可悲了)。 这个例子本身,还体现了“接口”的理念,这个就不多说了,我想大家都明白。 小结一下:实践出真知! 闻道有先后,术业有专攻。大家多经历多写代码,这些早晚都会体会到的。 希望胖子这回真明白了,再不明白我就。。。我就。。。 (还好,我还有个小秘籍:多态就是,在继承层次里的类或者接口的变量,可以随便相互赋值或转化。)

文档评论(0)

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

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

1亿VIP精品文档

相关文档