interface Interface1 {
public void test();
}
interface Interface2 {
public void test();
}
class Test implements Interface1,Interface2 { public void test() {
}
}
//如果上面的代码是正确的话,Test实现的是Interfaced1还是Interface2里面的方法
interface Interface1 {
public int test();
}
interface Interface2 {
public void test();
}
class Test implements Interface1,Interface2 { public void test() {
}
public int test() {
return 1;
}
}//为什么报错,
//非常晕乎 忘大虾几点一二拜谢!!1
所以编译器会报错,它不知道要执行那个test()方法。
呵呵……
希望楼主可以理解!!!
方法重载和返回类型无关比如说你在main方法中写了这样一句代码:
test();那么计算机知道是调用public void test() 还是调用public int test() 呢?
记住不要让计算机迷惑当计算机迷惑时那就证明是我们错了
1:方法名相同
2:参数不同但是你看下你的方法 两个test方法里面的参数是一样的如果你现在要调用test方法的话 jvm怎么知道到底要调用哪个呢
它怎么知道要返回什么类型呢?
你把每个方法后面都加个打印试试看就知道了,大概2个都调用吧
一个类实现两个不同的接口的时候,这两个接口不应该有方法签名相同的方法。
当有的时候你只能写一个。(具体实现的是哪个也不好说)还有在类实现的时候你写的两个方法其实方法签名是一样的,在Java中是不允许这样写的即使返回值类型不同,那也是一个方法。似乎think In java 也没说这个问题的解决办法。
总之尽量不要写这样的代码
第二种情况涉及到方法重载,java规定方法重载必须参数不一样。。
如果可以也是编译器默认的,谁也不知道的实现。第二个。很明显出现逻辑错误,相同的方法,怎么可能有不同的返回类型。这本身就不符合Java的编程规范和语法。
1 同时实现了2个test()方法
2 方法重载的概念再看一下。参数的类型或者个数不同,跟返回值没有关系