黑马程序员技术交流社区
标题:
JAVA中的重载和返回值类型的问题
[打印本页]
作者:
刘学明
时间:
2013-4-22 12:28
标题:
JAVA中的重载和返回值类型的问题
本帖最后由 刘学明 于 2013-4-23 18:46 编辑
毕老师说 方法的重载和方法的返回值没有关系 只和参数有关系。
void show(int a,char b,double c){}
a.
void show(int x,char y,double z){}//没有,因为和原函数一样。
b.
int show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
c.
void show(int a,double c,char b){}//重载,因为参数类型不同。注意:重载和返回值类型没关系。
d.
boolean show(int c,char b){}//重载了,因为参数个数不同。
e.
void show(double c){}//重载了,因为参数个数不同。
f.
double show(int x,char y,double z){} 和 void show(int a,char b,double c){}
这两个函数参数是一样的 只是返回值不同 这两个函数为什么不能同时在一个类中。
作者:
郭登旭
时间:
2013-4-22 12:36
public class Test2
{
double show(int x,char y,double z){}
void show(int a,char b,double c){}
}
复制代码
这样的话编译就不能通过,方法名相同、参数列表相同而返回类型不同,编译器会认为是同一个方法而报错:
Test2.java:5: error: method show(int,char,double) is already defined in class Test2
---------- javac ----------
Test2.java:5: error: method show(int,char,double) is already defined in class Test2
void show(int a,char b,double c){}
^
1 error
输出完成 (耗时 0 秒) - 正常终止
复制代码
作者:
晓风妮子
时间:
2013-4-22 12:41
方法的重载是指方法名相同,而参数不同(包括参数顺序,类型的不同),和返回值无关。所以这两个方法会被认为是同一个方法,而不是重载。
作者:
谭威
时间:
2013-4-22 12:41
如果参数的个数、类型、次序都相同,方法名也相同,仅返回值不同,则无法构成重载
作者:
江南雨
时间:
2013-4-22 12:47
方法重载是指参数不同(参数列表(参数个数),参数类型),和返回值没关系
作者:
王大斌
时间:
2013-4-22 13:06
你觉得两个在一个类中可以定义
void ff(){}
void ff(){}
吗?它会说你重复定义了一个
而你说的这个,
double show(int x,char y,double z){}
void show(int a,char b,double c){}
正是因为它不满足重载的定义,也就是参数的个数或者类型不同,与返回值无关。
所以编译器认为它是一个函数,当然就报错了
作者:
娄田田
时间:
2013-4-22 14:07
方法的重载要满足参数不同,参数不同可以是参数的类型不同,或者参数的个数不同,但是与方法的返回值类型是没有关系的。
public static void main(String[] args) {
method(1, "asd", true);
}
public static int method(int i, String s, boolean b) {
return 0;
}
public static String method(int i, String s, boolean b) {
return 0;
}
复制代码
可见,当在main中调用method方法的时候,你自己也不知道调用的是哪个方法,而编译器在编译的时候,会认为第二个方法是重复的方法,编译不通过。
作者:
何羡玉
时间:
2013-4-22 18:12
就是因为这两个函数的参数类型都一样,而且函数名一样,都是show,那你调用是写show(),虚拟机不知道是该执行哪一个,不晓得是执行要返回的show()还是没有返回值的show(),用毕老师的话就说虚拟机会疯掉的:loveliness:,所以这两个函数不同时存在的。明白了没
作者:
黄玉昆
时间:
2013-4-22 21:40
如果问题未解决,请继续追问,如果问题解决了,请将问题分类改为“已解决”,谢谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2