| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 558 人关注过本帖
标题:一个让我想了好久的关于多态的问题
只看楼主 加入收藏
淡淡的笔记
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
一个让我想了好久的关于多态的问题
多态的三要素:1:继承
              2:重写(重写父类继承的方法)
              3:父类引用指向字类对象


子类不对父类的方法进行重写的话,通过父类的引用不是也能调用子类从父类
继承过来的方法吗?

那么为什么多态里还需要重写呢?
2013-07-04 00:45
java小蚂蚁
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:上海
等 级:贵宾
威 望:18
帖 子:558
专家分:2186
注 册:2013-7-2
收藏
得分:10 
实例化也可以啊,一样的调用,不明白啊,存在肯定有他的道理,咱不理解,、
还有重载,参数不同,重新写一个方法呢,为何要重名,有什么特殊效果???

学海无涯#¥%……&*(
2013-07-04 17:31
ddtet
Rank: 4
等 级:业余侠客
帖 子:32
专家分:211
注 册:2013-5-4
收藏
得分:10 
举个例子,楼主看看能不能比较容易理解。

会使用多态的状况,通常希望其它地方能够使用父类来管理。
就拿软件的工具列(tool bar)来说,里头的按钮是能够动态增加、减少。
所以工具列有个函数叫作 addButton([按钮]);

但是工具列本身不能可能用重载的方式,无限制的增加各种按钮的类。
因此…最好是有个“按钮类”作为代表,所有的按钮都是“继承”它。
这样工具列就不需要理会未来会有多少种新的按钮,都不需要改写程式。
(这是使用多态的常见理由)

将焦点拉到这个父类,在不知道未来每个按钮有什么功能,会作什么事情的状况下。
只能先管好自己能够处理的事情,像是按钮被按下的检查。
这个时候可能会先建一个叫作“doSomething()”的函数,让自己呼叫,通过编译。
并且要求子类去“重写”doSomething() ,取代或增加原来的函数的功能。
子类实例化后,呼叫函数的时候,就变成执行子类的函数,达到“功能扩充”的目的。

至此,楼主说的三要素,都在这里面了。
其实只要用多态这种手段去解决问题,自然会满足这三个,不用去背它,
因为实作的时候一定离不开,但是如果考试会考,就另当别论了。
2013-07-05 08:20
淡淡的笔记
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-6-16
收藏
得分:0 
回复 3楼 ddtet
谢谢!理解了!
2013-07-06 22:47
快速回复:一个让我想了好久的关于多态的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016777 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved