在做类实现接口时发现一个bug,当某个类实现多个接口时,而这些接口中有相同的方法签名,但是这些相同方法的返回值不同,这样,就会导致实现接口的类中实现这些方法出错,因为两个方法的返回值不同,而同一个类中不能同时出现两个方法签名相同的方法,类实现接口就必须实现该接口的所有方法。
如下:TestC实现了TestA与TestB接口,TestA与TestB两个接口拥有相同的方法getA(),这个两个方法的方法签名相同,但是他们的返回值不同,当TestC实现两个接口时,继承的getA()方法就会报错。因为两个方法的返回值不同,而同一个类中不能同时出现两个方法签名相同的方法,而一个类实现了该接口就必须实现该接口的所有方法。这种矛盾导致了TestA在实现TestA与TestB接口时产生了矛盾,所以出错。
如下:TestC实现了TestA与TestB接口,TestA与TestB两个接口拥有相同的方法getA(),这个两个方法的方法签名相同,但是他们的返回值不同,当TestC实现两个接口时,继承的getA()方法就会报错。因为两个方法的返回值不同,而同一个类中不能同时出现两个方法签名相同的方法,而一个类实现了该接口就必须实现该接口的所有方法。这种矛盾导致了TestA在实现TestA与TestB接口时产生了矛盾,所以出错。
public interface TestA {
public String getA();
}
public interface TestB {
public void getA();
public String getB();
}
public class TestC implements TestA, TestB{
@Override
public String getA() {//报错
return null;
}
@Override
public String getB() {
return null;
}
}