- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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开发者拆开重做(这也实在是太愚笨可悲了)。
这个例子本身,还体现了“接口”的理念,这个就不多说了,我想大家都明白。
小结一下:实践出真知!
闻道有先后,术业有专攻。大家多经历多写代码,这些早晚都会体会到的。
希望胖子这回真明白了,再不明白我就。。。我就。。。
(还好,我还有个小秘籍:多态就是,在继承层次里的类或者接口的变量,可以随便相互赋值或转化。)
您可能关注的文档
- 非酮性高渗性糖尿病昏迷.doc
- 非金属之C与Si.doc
- 非金属元素2015425.doc
- 非金属元素选择题.doc
- 十进口民用核安全设备口岸检查放行单.doc
- 十项家长们在雅文最常询问的问题欧雪伦翻译胡晶晶柳佩辰.doc
- 十月革命和巴黎公社的比较.doc
- 非金融企业债务融资工具承销业务信贷政策.doc
- 非长卷何以骋其情.doc
- 千兆瓦级高功率聚变电源系统研究和应用doc .doc
- 2025至2030中国移动治疗台行业发展研究与产业战略规划分析评估报告.docx
- 2025至2030链激酶行业细分市场及应用领域与趋势展望研究报告.docx
- 2025至2030爆炸物探测扫描仪行业市场占有率及有效策略与实施路径评估报告.docx
- 2025至2030四川省智能制造行业细分市场及应用领域与趋势展望研究报告.docx
- 2026届高三二轮复习试题政治大单元突破练1生产资料所有制与分配制度含解析.docx
- 2026届高三二轮复习试题政治大单元突破练16哲学基本思想与辩证唯物论含解析.docx
- 2026届高三二轮复习试题政治大单元突破练2社会主义市场经济体制含解析.docx
- 浙江省衢州市五校联盟2025-2026学年高二上学期期中联考技术试题-高中信息技术含解析.docx
- 浙江省金丽衢十二校2026届高三上学期11月联考政治试题含解析.docx
- 2026届高三二轮复习试题政治大单元突破练7领导力量:中国共产党的领导含解析.docx
原创力文档


文档评论(0)