对于接口来说,传入参数冲突是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中,此时不满足重载的条件:方法名称相同,但是参数不同。因此会出错。
继承的两个同名方法或者满足重载的要求(此时这两个方法同时存在),或者参数相同、返回值相同(即完全冲突,此时需要重写,重写完之后只剩一个方法)