Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] duda, dato de retorno interface?

Estas en el tema de duda, dato de retorno interface? en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 07/03/2013, 13:19
Avatar de iivo94  
Fecha de Ingreso: febrero-2011
Ubicación: Argentina
Mensajes: 281
Antigüedad: 8 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/
  #2 (permalink)  
Antiguo 07/03/2013, 14:45
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 11 años, 3 meses
Puntos: 188
Respuesta: duda, dato de retorno interface?

Eso es, pero no se tiene por qué quedar ahí y puede aplicarse también a la herencia.

Así el método podría devolver un objeto de una ClasePadre pero realmente dependiendo de las condiciones podría devolver un objeto de ClaseHija1 o ClaseHija2.

Esto resulta útil cuando quieres tener características diferenciadas en los objetos que manejas que sean devueltos por un determinado método.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #3 (permalink)  
Antiguo 07/03/2013, 15:09
Avatar de iivo94  
Fecha de Ingreso: febrero-2011
Ubicación: Argentina
Mensajes: 281
Antigüedad: 8 años, 9 meses
Puntos: 3
Respuesta: duda, dato de retorno interface?

entiendo :P gracias

Etiquetas: clase, dato, metodo, retorno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:17.