对多态的深入理解(磨砺营马剑威java).docx

对多态的深入理解(磨砺营马剑威java).docx

ID:12338736

大小:19.79 KB

页数:5页

时间:2018-07-16

对多态的深入理解(磨砺营马剑威java).docx_第1页
对多态的深入理解(磨砺营马剑威java).docx_第2页
对多态的深入理解(磨砺营马剑威java).docx_第3页
对多态的深入理解(磨砺营马剑威java).docx_第4页
对多态的深入理解(磨砺营马剑威java).docx_第5页
资源描述:

《对多态的深入理解(磨砺营马剑威java).docx》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、磨砺营

2、马剑威

3、Android【威哥说】王健林一句话,刷爆了朋友圈。“先定一个能达到的小目标,比方说我先挣它一个亿”。好吧,也许我们没有那样的霸气,至少我们可以实现这样“先定一个能达到的小目标,比方说学会多态”。【正文】今天带大家深入理解面向对象的三大特征之一多态。    多态:同一事物的多种形态。    首先咱们举几个例子来说明多态的概念。话说威哥儿子leo比较喜欢小动物,所以家里养了小猫,小狗和乌龟。咱们学了继承关系,所以如果有分析的话需要四个类:    共同的父类:Pet(宠物)abstra

4、ctclassPet{abstractvoidrun();}    针对小狗我们会有一个狗类,来继承宠物类,并重写run的方法:classDogextendsPet{voidrun(){}}    此时我们根据之前面向对象知识,如果说创建一个狗类的话写法是:Dogd=newDog();    也就是声明一个狗类型的变量,并通过构造方法完成初始化,现在我们可以说有一只小狗叫做d;现在看着迎面跑来的这个小狗,威哥笑着对leo说:“leo,你的小宠物跑来了”。注意这里的重点,你的小宠物跑过来了,你的小宠

5、物,对,你没看错,是小宠物,那么咱们这个现实生活中的逻辑在代码里同样是通的,具体表现为:Petd=newDog();    也就是说,我们有一只狗,我们也可以叫做小宠物,专业叫法叫做:父类引用指向子类对象    那有人说这个怎么跟多态能扯上关系,简单点理解就是一个对象,多种形态,左边是一种宠物形态,右边是一个狗形态,这不就是多态么。    理解了多态的概念,那么咱们看看在程序中多态具体体现在那些方面:    1、对象的多态性:    我们看看对象的多态性如何引申出来。    现在我们要调用的话就是

6、,在测试类中直接定义run方法,传入Dog类型的参数,然后在主方法中创建Dog对象,直接调用run方法,传入dog,具体代码如下:publicstaticvoidmain(String[]args){Dogdog=newDog();run(dog);}publicstaticvoidrun(Dogdog){dog.run();}    现在我又多了一个猪类:    猪类:classPigextendsPet{voidrun(){}}    此时猪受宠了,leo又想看猪蠢萌的跑法了,那么此时又得定义

7、publicstaticvoidmain(String[]args){Dogdog=newDog();run(dog);Pigpig=newPig();run(pig);}publicstaticvoidrun(Dogdog){dog.run();}publicstaticvoidrun(Pigpig){pig.run();}    然后在main方法中创建Pig对象,然后调用run方法将pig对象传入进去。    哎,此时咱们帅气的leo小男神看了龟兔赛跑,又想看乌龟跑了,那么此时得创建一个乌龟

8、类:    乌龟类:classTutleextendsPet{voidrun(){}}    同样的,需要调用的话,又得写一个方法,传入乌龟的参数类型,具体如下:publicstaticvoidmain(String[]args){Dogdog=newDog();run(dog);Pigpig=newPig();run(pig);Tutletutle=newTutle();run(tutle);}publicstaticvoidrun(Dogdog){dog.run();}publicstatic

9、voidrun(Pigpig){pig.run();}publicstaticvoidrun(Tutletutle){tutle.run();}    此时我们发现run方法是大量的重复,而且处理都是直接调用run方法,那么咱们之前也说了父类引用能指向子类对象,那么咱们就可以直接来个升级版:publicstaticvoidrun(Petpet){pet.run();}    此时,不管你传入狗还是猪还是乌龟,都可以直接调用抽取出来的run方法,因为我们说了无论是狗,乌龟,还是猪都属于宠物类型,都可

10、以直接publicstaticvoidmain(String[]args){Dogdog=newDog();run(dog);Pigpig=newPig();run(pig);Tutletutle=newTutle();run(tutle);}    此时结构就很明朗了,那么此时我们显而易见的是我们可以总结出扩展的好处了:    a)提升了代码的复用性;    并且,我们还有一点就是,如果后边leo又准备买一只兔子,那么我们可以直接使用run方法,创建兔子对象传入即可,所以,此处还

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。