El objetivo del polimorfismo, consiste en poder acceder a diferentes servicios en tiempo de ejecución sin necesidad de implementar diferentes referencias a objetos. Esta característica, provee una gran flexibilidad en el proceso de desarrollo y ejecución de la aplicación.
Por ejemplo, considerando la jerarquía de herencia de Figuras Geométricas de la siguiente figura, es posible hacer uso del concepto de polimorfismo.
Con base en el modelo anterior, se puede crear una referencia de la clase FiguraGeometrica de la siguiente forma.
FiguraGeometrica figura; |
A la referencia figura se le puede generar instancia de cualquiera de las clases que derivan de ella de la siguiente forma.
figura = new Circulo( 5 ); |
figura = new Cuadrado( 5 ); |
figura = new Rectangulo( 5 , 2 ); |
figura = new Triangulo( 5 , 2 ); |
figura = new Cubo( 5 ); |
En la primera línea, el objeto figura tiene la forma de circulo, de tal forma que si se accede al método getArea, se ejecuta el método implementado en círculo.
En la segunda línea, el objeto figura tiene la forma de cuadrado, de tal forma que si se accede al método getArea, se ejecuta el método implementado en cuadrado.
En la tercer línea, el objeto figura tiene la forma de rectángulo, de tal forma que si se accede al método getArea, se ejecuta el método implementado en rectángulo.
En la cuarta línea, el objeto figura tiene la forma de triangulo, de tal forma que si se accede al método getArea, se ejecuta el método implementado en triangulo.
En la quinta línea, el objeto figura tiene la forma de cubo, de tal forma que si se accede al método getArea, se ejecuta el método implementado en cubo.
La siguiente implementación del modelo presentado demuestra en tiempo de ejecución el concepto de polimorfismo.
En la implementación de la clase Principal, se puede apreciar que el objeto figura cambia de forma cada vez que se hace una nueva instancia. Así mismo en cada instancia accede a la implementación del método de la clase instanciada.
El último caso, realiza la instancia de la clase Cubo, en donde esta clase no tiene implementado el método getPerimetro. Para este caso, en el llamado a este método, se accede al método getPerimetro implementado en la clase superior que es Cuadrado.
Fuente: hflorezf-es
El último caso, realiza la instancia de la clase Cubo, en donde esta clase no tiene implementado el método getPerimetro. Para este caso, en el llamado a este método, se accede al método getPerimetro implementado en la clase superior que es Cuadrado.