黑马程序员技术交流社区

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

作者: 李彦来    时间: 2014-7-11 10:37
标题: 重载是不是多态啊?
多态的先决条件是继承或实现:子类继承父类,子类覆盖父类,父类指向子类(接口类似)

但是重载是在当前类里不同参数个数,不同参数类型的方法,不存在覆盖和指向啊,这就和多态没什么关系吧?


所以我想问问重载是不是多态?或者是不是多态的特殊类型啊?


作者: 吴俊勇    时间: 2014-7-11 15:23
个人理解是没什么关系
作者: 龙飞九天    时间: 2014-7-11 16:13
重载和多态没什么关系吧
作者: cyc52tjm    时间: 2014-7-11 16:19
重载是方法的重载,多态是父类的引用指向子类对象。二者应该没什么关系。
作者: 遗失的美好YXJ    时间: 2014-7-11 22:14
不是,重载是一个类里面的事,多态是多个类里面的事情
作者: 北极£莜蓝    时间: 2014-7-11 23:19
多态的三大前提:   必须要要继承或者接口实现,  方法重写,父类引用指定子类对象.(多态可以理解为事物的多种形态)
人   =  学生
人  =   教师
.................................
学生和教师都是人的不同形态
作者: lc2015    时间: 2014-7-12 01:08
重载体现在一个类中,如果出现了两个或者两个以上的同名函数,它们的参数的个数,或者参数的类型不同;
多态是体现在父类引用或者接口的引用指向了自己的子类对象。
作者: 谭荣强    时间: 2014-7-12 18:11
都在扯.多态是事物的多种形态,不仅仅在子父类中.重载就是典型的多态,一个名字,多种形态,老毕在视频里说的很清楚.但是我们说大都是对象的多态,也就是子父类间的覆盖.
作者: 李彦来    时间: 2014-7-12 19:03
谭荣强 发表于 2014-7-12 18:11
都在扯.多态是事物的多种形态,不仅仅在子父类中.重载就是典型的多态,一个名字,多种形态,老毕在视频里说的很 ...

但是多态是有前提的啊?重载没有吧?
作者: hm521824    时间: 2014-7-12 19:36
如果这样的号。可以除掉一个名词了。
作者: 谭荣强    时间: 2014-7-12 21:28
李彦来 发表于 2014-7-12 19:03
但是多态是有前提的啊?重载没有吧?

重载有重载自己的前提
作者: sugar    时间: 2014-7-12 21:45
重载:类中有多个函数,这些函数有相同的功能,函数名相同,参数列表不同,返回值类型可以相同,可以不同;
作者: sugar    时间: 2014-7-12 21:46
多态:父类引用指向子类对象;
作者: sing    时间: 2014-7-12 23:17
反正知道不一样
作者: 科篮    时间: 2014-7-13 00:15
不是,多态是同一个对象在不同时刻表现出来的多种状态。比如:水可以是冰,可以是水,可以是水蒸汽。
多态的前提:                
A:要有继承或者实现关系                
B:要有方法的重写 (注意是方法重写不是重载)
C:要有父类引用或者父接口引用指向子类对象
方法重写和重载区别
方法重写:在子父类中,方法声明相同(返回值类型,方法名,参数列表都相同)
方法重载:在同一个类中,方法声明相同,参数列表不同,与返回值类型无关。可以改变返回值类型。
所以多态和重载没有关系
作者: Mokill0911    时间: 2014-7-13 00:16
你之所以问这个问题是因为没有理解多态存在的意义——

多态是由于类与类之间出现了继承关系而导致的。

而类则是对现实生活中事物的描述。

而方法(函数)则仅仅是现实生活中事物的一种行为。

多态之所以有前提,是因为需要类与类之间产生关系才能出现多态。

而函数之间的重载,只是因为有相同行为,但参与行动和操作的参数不同而导致的。

也就是说——

重载的本质是同一种方法,但参与操作的数据不同。

而多态则是“事物存在的多种形态”,即必须有事物与事物之间存在关系才能产生的概念。


这是两种完全不同的概念。






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