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:
Como veis, en el programa principal creo una lista, en la cual meto una Clase persona positiva y una Clase persona negativa.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()); } }
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 :)