Cuando una clase implementa dos interfaces, las interfaces tienen el mismo nombre de método pero un tipo de retorno diferente, ¿por qué no funciona? java dará un error de compilación para esto, ¿por qué no podemos sobrecargar los métodos en la clase interface_1?
import static java.lang.System.out; interface A1{ int add(); } interface A2{ String add(); } public class interface_1 implements A1,A2{ public static void main(String args[]){ out.println("a"); } @Override public String add() { // TODO Auto-generated method stub return null; } @Override public int add() { // TODO Auto-generated method stub return 2; } }La razón por la que no puede hacer eso es la misma por la que no puede sobrecargar un método solo en su tipo de retorno: Java carece de una sintaxis para elegir qué método le gustaría llamar cuando los nombres de los métodos y los parámetros son idénticos.
Cuando escribes
object res = obj.add(); el compilador no tiene idea de cuál de los dos métodos add le gustaría llamar, el que devuelve un int o el String , porque sus nombres y parámetros son los mismos.