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 :)