黑马程序员技术交流社区

标题: 重载是不是多态 [打印本页]

作者: guojiadui    时间: 2015-5-28 15:50
标题: 重载是不是多态
说道多态都是说重写方法,那钟载不是吗
作者: ETOLIA    时间: 2015-5-28 16:05
什么叫多态。多态就是龙生九子,各有不同;是我们都属于‘生物’这个基类,都有眼睛鼻子嘴这些成员变量,有‘吃饭喝水看美女’这些成员方法,但是每个物种都并不一样,比如人可能有‘看美女’这个成员方法,狗可能就是‘看母狗’这个成员方法。你重写(重载)了狗的‘看母狗’方法,导致了会有一种特殊的狗出现,这也符合广义多态的定义。
多态是种现象,广义地说重载实现了多态性,但是是编译时决定的静态多态。

个人感觉有时候或许并不用去纠结这些具体的概念,或许看到概念背后的真理会让你豁然开朗。推荐thinking in c++这本书,讲面向对象什么的讲的挺棒的。
作者: guojiadui    时间: 2015-5-28 19:22
ETOLIA 发表于 2015-5-28 16:05
什么叫多态。多态就是龙生九子,各有不同;是我们都属于‘生物’这个基类,都有眼睛鼻子嘴这些成员变量,有 ...

看了,我也是醉了
作者: wwb1105    时间: 2015-5-28 19:34
一楼神回复   必须顶一下
作者: fecuznmn    时间: 2015-5-28 19:54
多态是父类引用指向子类对象,就是毕老师说的“我要一只动物,你给我一只猫”

重载是,如果两个方法的功能是相近的,这时候如果方法名起得不同又相似容易让人搞混,干脆起同名,用参数列表来区分。当传入不同参数类型时,使用不通的方法。

所以这俩是两回事咯
作者: 景彬    时间: 2015-5-28 19:57
醉了醉了
作者: 18530919536    时间: 2015-5-28 20:24
二楼总结的也太形象了吧
作者: 城北一直晴。    时间: 2015-5-28 20:27
我也觉得神回复,一样的!
作者: 大西洋    时间: 2015-5-28 20:28
本帖最后由 大西洋 于 2015-5-28 20:31 编辑

重载、重写都是多态的表现形式~
同一个函数的多种形态~

作者: a397131103    时间: 2015-5-28 21:04
重载和多态没联系   有联系的是重写 子类重新父类方法
作者: ZYZQ    时间: 2015-5-28 21:18
一个是个性,一个是基因
作者: 914360849    时间: 2015-5-28 21:18
重载  是一个类中的,跟多态 关系不大吧
作者: xyn0424    时间: 2015-5-28 21:32
重载不是多态
作者: !85684009ex    时间: 2015-5-28 21:39
膜拜大神!这个都问的出来!
作者: 开弓没有回头箭    时间: 2015-5-28 21:50
我觉得重载与多态不同的概念
重载是在同一类中,在调用本类的方法是,遇到同名方法,会因为传入参数不同而调用的方法不同
多态是子类的方法会覆盖父类的方法,而且方法名与参数都必须相同,在创建了子类后,用其父类引用调用该方法是时,会因为子类的不同而调用不同的方法
作者: haoguan10    时间: 2015-5-28 21:58
额 不是吧
作者: 小车车    时间: 2015-5-28 22:08
不是哦!
作者: 熊猫宝宝    时间: 2015-5-28 22:26
看完,我也醉了

作者: bin2015    时间: 2015-5-28 23:00
多态是父类的引用类型变量指向了子类的对象,或者是接口的引用类型变量指向了实现类的对象。例如:猫、狗、动物。我要一个动物你可以给我一只猫或者狗都可以。
函数重写函数必须完全一样,重写的意义是父类的功能无法满足子类的需求所以才要重写。这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容。
函数重载函数名一样,但形参列表不一样。

全手打
作者: Lucus    时间: 2015-5-28 23:13
看到回帖。瞬间学习了!!
作者: 半世心修    时间: 2015-5-28 23:28
其实重载也称编译时多态
作者: 张凝宁    时间: 2015-5-28 23:48
毕老师说的“我要一只动物,你给我一只猫”




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2