黑马程序员技术交流社区
标题:
关于JAVA基础,求教
[打印本页]
作者:
唐林渊
时间:
2012-2-23 21:08
标题:
关于JAVA基础,求教
请问大家,为什么一个类里面不能有两个方法名相同,参数列表相同,返回值类型不同的方法。。
作者:
朱皓
时间:
2012-2-23 21:19
哎,我还是用代码说明吧
class A
{
public void fun()
{
System.out.println("apple");
}
public int fun()
{
System.out.println("dog");
return 3;
}
}
public class test
{
public static void main(String args[]){
A temA=new A();
temA.fun();//你认为JAVA虚拟机会执行那个方法
}
}
}
JAVA 虚拟机自己也不知道要执行那个方法,所以他就晕了,所以类里面不能有两个方法名相同,参数列表相同,返回值类型不同的方法
作者:
刘凤山
时间:
2012-2-23 21:22
要是有两个系统就不知道先调用那一个了。
作者:
唐兴旺
时间:
2012-2-23 21:28
两个方法名相同,参数列表相同,首先你传值,他都无法判断使用哪个,返回值类型不同,那是方法执行后的事。java虚拟机都不知道该用哪一个方法,也就没有什么返回值,不用考虑了。
你是不是看到重载了?
作者:
张一凡
时间:
2012-2-23 22:07
方法名相同,参数类型或个数不同,虚拟机还可以接受,这样就是函数的重载。
而像你说的,方法名相同,参数列表也相同的话,那虚拟机就接受不鸟了,它会崩溃的。
另外方法名相同时,虚拟机就看参数列表,而参数列表与返回值类型没任何关系。
所以为了别让虚拟机崩溃,一个类里面可以有2个方法名相同的函数(方法),但是决不可以有2个相同的参数列表。
作者:
蒋昌宏
时间:
2012-2-23 22:37
下列哪些答案和给定的show方法重载了?
void show(double a,boolean b,char c){}
A
void show(boolean b,double a,char c){}//重载了,类型不同。
B
int show(double x,boolean y,char z){}//没有重载,而且这个不能和给定函数存在于一个类中。会引发调用的不确定性。
C
void show(int a,int b,int c){}//重载。类型不同。
D
void show(double x,boolean y,char z){}//不重载,一模一样。不允许存在同一个类中,调用的不确定性。
E
boolean show(double a,double b,char c){}//重载,类型不同。
F
int show(int a,char c){}//重载,个数不同。
作者:
蒋昌宏
时间:
2012-2-23 22:37
你说的就是B...
作者:
【专】【属】
时间:
2012-2-24 10:09
我们在调用一个方法是,可能直接去调用而它的返回值与我们无关,所以如果有两个不同的返回值,jvm就不知道要那一个方法。
作者:
雷楚光
时间:
2012-2-24 14:28
当方法名相同,并且参数列表相同,java怎么知道该调用那个方法,返回那个结果。
就像你去买烟,你和老板说:来包烟。这是返回的值是:各种不同的烟。那么老板怎么知道给你拿哪种烟。
作者:
♂诸侯♂
时间:
2012-2-24 18:13
蒋昌宏 发表于 2012-2-23 22:37
下列哪些答案和给定的show方法重载了?
void show(double a,boolean b,char c){}
顶一下六楼。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2