El polimorfismo es una característica de la POO aplicable a los métodos que permite ejecutar un código de método distinto según el objeto que se haya instanciado y referenciado. Para que se de en Java se necesita que exista:
- Relación de herencia.
- Exactamente la misma signatura de método en ambas clases (padre e hija).
Se puede redefinir cualquier método salvo aquellos que sean “final” o “static”.
Se puede acceder a un método de la superclase que haya sido redefinido utilizando la palabra super.
// Método clase base public int funcion() // Método redefinido en la clase derivada public int funcion() // Acceso al método de la clase base super.funcion()
Un ejemplo de polimorfismo podría ser:
//Clase super
public class Empleado
{
protected int sueldoBase = 700;
public int getSueldo() {
return sueldoBase;
}
}
//La clase Analista hereda a Empleado
public class Analista extends Empleado
{
//Y "polimorfea" getSueldo
public int getSueldo() {
return sueldoBase + 500;
}
}
//La clase Programador hereda a Empleado
public class Programador extends Empleado
{
//Y "polimorfea" getSueldo de forma distinta a Analista
public int getSueldo() {
return sueldoBase + 70;
}
}
Como sabemos cualquier clase que creamos en Java se hereda de la clase Object. De esta clase, los métodos que pueden ser redefinidos son:
- clone(): crea un objeto a partir de otro objeto de la misma clase.
- equals(object): indica si dos objetos son o no iguales. Devuelve true si son iguales.
- toString(): devuelve un String conteniendo una representación del objeto como cadena de caracteres.
Por último comentar que el atributo “final” , si se indica en un método, no se podrá “polimorfear” ese método en clases derivadas:
class MiClase
{
public final void metodoNoPolimorfeable()
{ ...
Y si se indica en una clase, no se podrá heredar de dicha clase.
final class ClaseNoHeredable
{ ...
Por ejemplo, los tipos de datos básicos mapeados en clases son de tipo final.
Advertisement
Pingback: Aproximación a Java « Un día oí