miércoles, 30 de enero de 2008

Polimorfismo


En Java, el polimorfismo de métodos se implementa con la sobrecarga de métodos: métodos con el mismo nombre, y mismo número y tipo de argumentos.

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: