Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/02/2016, 15:12
p3cn0G
 
Fecha de Ingreso: febrero-2014
Mensajes: 60
Antigüedad: 10 años, 2 meses
Puntos: 0
Duda relacionada con interfaces

Buenas, tengo el siguiente problema. Resulta que tengo una interfaz y dos clases. Os lo muestro:

INTERFAZ
Código:
public interface IImpresion {
   public String imprimir();
}

CLASE PERSONA NEGATIVA
Código:
public class CNegativo implements IImpresion{

    String mensaje;

    public CNegativo() {
        mensaje = "Odio los lunes";
    }
    
    
    
    @Override
    public String imprimir() {
        return mensaje;
    }
    
    
}

CLASE PERSONA POSITIVA
Código:
public class CPositivo implements IImpresion {
    
    String mensaje;

    public CPositivo() {
        mensaje = "Que buen tiempo hace";
    }
    
    
    
    @Override
    public String imprimir() {
        return mensaje;
    }
    
}


MAIN
Código:
public static void main(String[] args) {
        
        List lista = new ArrayList();
        
        lista.add (new CPositivo());
        lista.add (new CNegativo());
        
        Iterator iterador = lista.iterator();
        
        
        while(iterador.hasNext()){
            
            IImpresion clase = (IImpresion)iterador.next();
            System.out.println(clase.imprimir());
        }
        
    }
Como veis, en el programa principal creo una lista, en la cual meto una Clase persona positiva y una Clase persona negativa.

Luego quiero recorrer la lista con un iterator, y para sacar cada uno de ellos, casteo el iterador a la Interfaz. Para mi sorpresa, cuando llamo al metodo imprimir(), resulta que me saca la variable mensaje de cada una de las clases, sin haber casteado el iterator a ninguna de las clases.

¿A que se debe esto? Si no me he explicado bien, intentaré explicar mejor mi duda :)