Está en la página 1de 5

Conocimiento: Polimorfismo, Enlace Dinmico

Prof. Viviana Alvarez Tom

Conocimiento: Polimorfismo

Polimorfismo significa en gramtica mltiples formas.

En programacin orientada al objeto hay varias formas de polimorfismo:

1. Cuando invocamos el mismo nombre de mtodo sobre instancias de distinta


clase

2. Cuando creamos mltiples constructores

3. Cuando va subtipo asignamos una instancia de una subclase a una


referencia a la clase base.

4. Cuando creamos una clase derivada, gracias a la relacin es-un podemos


utilizar instancias de la clase derivada donde se esperaba una instancia de la
clase base. Tambin se conoce como principio de sustitucin.

El objetivo del polimorfismo es la reutilizacin y flexibilidad que se puede obtener de


las diferentes clases. Adems de la facilidad para adaptarse a cambios

Permite cdigo independiente del tipo, y es fcil de escribir y entender.

Al aadir nuevos tipos, tenemos la ventaja de que:


No hay que reescribir cdigo
Los programas son extensibles

El polimorfismo se consigue a travs de:

Interfaces
Clases abstractas
Mtodos polimrficos (sobrescritura y sobrecarga)
Implementacin de Colecciones genricas
Implementacin de Mtodos genricos.

Por ejemplo:
Conocimiento: Polimorfismo, Enlace Dinmico
Prof. Viviana Alvarez Tom

dia
Slo tenemos acceso a atributos de Empleado, pero con la implementacin de Managerbono

Enlace dinmico

Es importante entender qu mtodo es usado al invocar a un nombre que se puede


referir a instancias de distinta clase. Al momento de la compilacin, el compilador
intenta resolver el mtodo que corresponde segn su nombre y parmetros. Si la
superclase y la clase base tienen definido el mismo mtodo, el problema es a cul
llama.

Si el mtodo en la clase declarada para la variable no es privado, static, o final, se


invocar en forma dinmica. Esto es, se invocar el mtodo definido segn el objeto
referenciado por el nombre y no segn la declaracin del nombre.

Por ello, si una clase derivada redefine el mismo mtodo, ste ser invocado para sus
instancias.

El ligado o enlace dinmico se resuelve a tiempo de ejecucin.

Ventajas del enlace dinmico:


Conocimiento: Polimorfismo, Enlace Dinmico
Prof. Viviana Alvarez Tom

1. La sobrescritura de mtodos permite a Java admitir el polimorfismo en tiempo


de ejecucin.

2. El polimorfismo es esencial en la programacin orientada al objeto ya que


permite que una clase general especifique mtodos que sern comunes a todas
las clases derivadas, permitiendo a stas definir la implementacin especfica de
alguno de estos mtodos.

3. Esta forma de polimorfismo dinmico durante la ejecucin es uno de los


mecanismos ms poderosos que ofrece la orientacin a objeto para soportar
reutilizacin de cdigo y robustez.

4. La capacidad que tienen las bibliotecas de cdigo existentes de llamar mtodos


de instancias nuevas de clases sin volver a compilarlos, pero manteniendo a vez
la interfaz abstracta y limpia, es una herramienta poderosa.

Por ejemplo: veamos el siguiente cdigo, fijarse en las asignaciones que son las que la
JVM debe revisar al momento de invocar el mtodo adecuado:
Conocimiento: Polimorfismo, Enlace Dinmico
Prof. Viviana Alvarez Tom

El resultado de la ejecucin del mtodo main es:


Conocimiento: Polimorfismo, Enlace Dinmico
Prof. Viviana Alvarez Tom