黑马程序员技术交流社区

标题: 这个重载到底是怎么回事啊?? [打印本页]

作者: Captain_Jack_Sp    时间: 2013-8-24 02:31
标题: 这个重载到底是怎么回事啊??
本帖最后由 黄兴旺 于 2013-8-24 19:44 编辑

问题是那个下面那个函数与上面重载了。按注释来说的话
F选项不可以的原因是她不明确调用那个函数,可是B的int类型却可以啊

QQ4.png (49.77 KB, 下载次数: 11)

QQ4.png

作者: 黄兴旺    时间: 2013-8-24 02:56
重载的特点是函数名相同,参数列表的个数、类型或者顺序不同,与返回值类型无关。

作者: 梦航    时间: 2013-8-24 08:51
函数重载的思想在于实现“一物多用”,方法重载要明确三点:
1、在同一个类内
2、方法名相同
3、参数列表不同
除此之外,对于方法的返回值类型或者方法的修饰符等,均与方法重载没有任何关系

祝编程愉快!
作者: masterV    时间: 2013-8-24 09:22
要注意,B的参数跟题目中的参数顺序是不同的,而F中的参数跟题目中的参数是相同的。重载只看方法名,参数类型和参数个数(包括顺序),不看返回值。
因为如果只是返回值不同,在调用该方法时,系统不知道该调用哪一个。
作者: 清心玉质    时间: 2013-8-24 09:41
依据我个人理解,F的答案可能有问题。
重载就是在同一个类中定义了两个及以上的同名方法,方法参数列表不同(包括 类型、个数、顺序),方法体也不同,这是方法重载。
重载主要看的是同名方法的参数列表。

作者: binghaiwang    时间: 2013-8-24 10:10
重载的方法主要看参数列表的个数,类型,顺序是否相同 ,不看返回类型

B选项里边的顺序是不同的。
作者: 外面的世界    时间: 2013-8-24 10:19
重载的格式有顺序,与函数返回值没有关系的
作者: 丁海平    时间: 2013-8-24 10:25
标题: 重载
本帖最后由 丁海平 于 2013-8-24 10:47 编辑

重载就是方法名相同,参数的类型与个数不同,而且与返回类型无关,看最后一个与第二个方法重复了

作者: 穿靴子的猫    时间: 2013-8-24 11:14
重载:相同对象(在同一个类里面),在不同环境(参数列表不同) ,对相同指令(方法名相同),做出的不同响应(每一个方法都做独立的事),与返回值无关
作者: itachi    时间: 2013-8-24 11:20
重载与参数有关,与返回值类型无关,虚拟机调用函数时是不看你的返回值类型的
show(a,b,c);
如果定义了int show(a,b,c)和double show(a,b,c),虚拟机就搞不清到底调用哪一个
作者: 乖睡觉咯    时间: 2013-8-24 15:33
函数的重载
                A:函数名相同,参数列表不同。       
                        **参数类型不同。int add(int i)void add(double d)
                        **参数个数不同。add(int a,int b);add(int a,int b,int c)
                        **参数顺序不同  
                B:特点:与返回值类型无关,只看参数列表。
作者: 行如止水    时间: 2013-8-24 15:40
重载,简单来说就是函数名相同,但是函数声明却不一样的




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