Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/03/2013, 13:19
Avatar de iivo94
iivo94
 
Fecha de Ingreso: febrero-2011
Ubicación: Argentina
Mensajes: 281
Antigüedad: 13 años, 9 meses
Puntos: 3
Pregunta duda, dato de retorno interface?

si un metodo retorna un dato interfaceejemplo, lo que va a retornar enrealidad es un objeto de una clase que implemente la interface no? pero se puede poner q el valor de retorno es una interface por el polimorfismo? estoy bien? :P

el codigo q me hizo dudar es este :
Código:
interface InterfaceEjemplo {
    public void metodoUno();
    public void metodoDos();
}

class ClaseContenedora {
    public InterfaceEjemplo metodo(boolean flag) {
        InterfaceEjemplo i = null;
        if (flag) {
            class ClaseInternaLocalUno implements InterfaceEjemplo {
                public void metodoUno() {
                    System.out.println("ClaseContenedora.ClaseInternaLocalUno.metodoUno()"); }
                public void metodoDos() {
                    System.out.println("ClaseContenedora.ClaseInternaLocalUno.metodoDos()"); }
            }
            i = new ClaseInternaLocalUno();
        }
        else {
            class ClaseInternaLocalDos implements InterfaceEjemplo {
                public void metodoUno() {
                    System.out.println("ClaseContenedora.ClaseInternaLocalDos.metodoUno()"); }
                public void metodoDos() {
                    System.out.println("ClaseContenedora.ClaseInternaLocalDos.metodoDos()"); }
            }
            i = new ClaseInternaLocalDos();
        }
        return i;
    }
}
 
public class Main03 {
    public static void main(String[] args) {
        ClaseContenedora cc = new ClaseContenedora();
 
        InterfaceEjemplo i = cc.metodo(true);
        i.metodoUno();
        i.metodoDos();
 
        i = cc.metodo(false);
        i.metodoUno();
        i.metodoDos();
    }
}
/*
SALIDA:
ClaseContenedora.ClaseInternaLocalUno.metodoUno()
ClaseContenedora.ClaseInternaLocalUno.metodoDos()
ClaseContenedora.ClaseInternaLocalDos.metodoUno()
ClaseContenedora.ClaseInternaLocalDos.metodoDos()
*/
]
de la pagina q me paso fuzzy
http://javierrguez.wordpress.com/201...ases-internas/