38 - Polimorfismo y Enlace Dinámico en Java
38 - Polimorfismo y Enlace Dinámico en Java
38 - Polimorfismo y Enlace Dinámico en Java
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:
Por ejemplo:
Interfaces
Clases abstractas
Mtodos polimrficos (sobrescritura y sobrecarga)
Implementacin de Colecciones genricas
Implementacin de Mtodos genricos.
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: