Polimorfismo

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

Una Respuesta a Polimorfismo

  1. Pingback: Aproximación a Java « Un día oí

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s