对于接口来说,传入参数冲突是overload,则不是问题, 只有传出参数这个问题是接口多继承不允许的
例如:
public interface IA {
void doSomething();
}
public interface IB {
Integer doSomething();
}
public interface IAB extends IA, IB {
@Override
public void doSomething();
@Override
public Integer doSomething();
}
这种情况编译器会告诉你, IA, IB 接口冲突,是不允许的
回答:本质上就是重载的问题
当IAB继承IA和IB的时候,有两个方法名称相同,参数相同,但是返回值类型不同的方法doSomething();但是这两个方法在同一个接口IAB中,此时不满足重载的条件:方法名称相同,但是参数不同。因此会出错。
继承的两个同名方法或者满足重载的要求(此时这两个方法同时存在),或者参数相同、返回值相同(即完全冲突,此时需要重写,重写完之后只剩一个方法)