public static void main(String[] args){
system.out.println(add(3,5))
}
static double add(int i,double j){
return i+j;
}
static double add(double i,int j){
return i+j;
}
static double add(double i,double j){
return i+j;
}
static double add(float i,int j){
return i+j;
}
提示报错the mathod add(int i,double j)is ambiguous for the type super
java应该已经有叫add的函数,和你定义的重名了,你需要修改你的函数名就可以了
有没有大神教教我为啥会报错…
我觉得是这样的,这里使用了重载,那么system.out.println(add(3,5)),这里add(3,5),执行该条语句时,
static double add(int i,double j){
return i+j;
}
static double add(double i,int j){
return i+j;
}
这两个是不是一样的?????
add(3,5)在调用add方法时,不知道去调用哪一个。
static double add(int i,double j){
return i+j;
}
static double add(double i,int j){
return i+j;
}
static double add(double i,double j){
return i+j;
}
static double add(float i,int j){
return i+j;
}
这四个方法,在本程序里是一样的,当你add(3,5)时,给add方法传进去的实参是默认的,也就是说传递的实参是int型的3和5;
然而int型数据是可以被隐式转换为float或double型的,
所以在此处传递默认数据时,这四个方法实质上是重复的,区分不开,所以报错ambiguous(模棱两可)
修改方法名即可,亲测有效
被你说的,我就亲自试了一下代码,为什么我注释掉就可以呢???
我是改了方法名,可以的。刚才被你一说我也发现只要注释掉第一个方法就OK
楼主你好,我觉着是这样的,默认int型数据可以往float和double型转换,这样就造成了add(3,5)调用不明,只有函数名、参数列表均完全一致才可以,准确调用,所以加上方法
static double add(int i,int j){
return i+j;
}
这样就可以保证准确调用了,你试试