Существует только один случай, в котором это сработает, что упоминается xamde , но не полностью объяснено.Он связан с ковариантными типами возвращаемых данных .
В JDK 5 ковариант возвращает, где он добавлен, и, как таковое, является допустимым случаем, который прекрасно скомпилируется и работает без проблем.
public interface A {
public CharSequence asText();
}
public interface B {
public String asText();
}
public class C implements A, B {
@Override
public String asText() {
return "C";
}
}
Следовательно, следующее будет выполнено без ошибок и выведет «C» на основной выход:
A a = new C();
System.out.println(a.asText());
Это работает, потому что String является подтипом CharSequence.