Una variable también puede ser polimórfica, es decir, cambiar de forma o de clase de objeto al que referencia durante la ejecución de un programa. El polimorfismo de una variable en Java está limitado de tal forma que una variable que referencia a un objeto sólo puede especializarse, tal y como ocurre en la vida real.
Ejemplo con polimorfismo en el método canta y en la variable fulanito
class Persona{
private String nombre;
protected String cancion;
public void canta(){System.out.println("la la la");}
} //End Persona
class Ladron extends Persona{
private int ganancias;
public void canta(){System.out.println("Yo no he sido");}
public void roba(int n){ ganancias= ganancias + n; }
} //End Ladron
class Juez extends Persona {
public void canta() {System.out.println("Soy la ley");}
} //End Juez
public class Poli5 {
// ejemplo de polimorfismo de mensaje canta
public static void main(String args[])
{
Persona fulanito = new Persona();
Ladron ladroncito = new Ladron();
Juez juececito = new Juez();
fulanito.canta(); // canta una persona
fulanito = ladroncito;
fulanito.canta(); // canta un ladrón
fulanito.roba(100);
//error de compilación: fulanito es Persona. ¿Solución?
fulanito = juececito;
fulanito.canta (); // canta un juez
}
} // End Poli5
Restricción en Java al polimorfismo sintáctico: cambio a subclases o especialización.
Verificación estática de tipos: tiempo de compilación.
No hay comentarios:
Publicar un comentario