Es otro de los paradigmas de la Orientación a Objetos.
Consiste en que una vez se ha definido una superclase para un grupo de subclases, cualquier instancia de esas subclases puede ser usada en el lugar de la superclase.
Significa que podemos referenciar un objeto de una subclase mediante una referencia declarada como una de sus superclases.
Por tanto mediante el polimorfismo podemos asignar a una referencia de un tipo superior en la jerarquía de herencia, una instancia de un tipo inferior (que herede).
Ahora bien, que la referencia sea de otro tipo no significa que los métodos que se ejecuten sean distintos. Siguen siendo los de la instancia.
Algunos usos habituales del polimorfismo en Java son:
- Implementación de colecciones genéricas.
- Implementación de métodos genéricos.
Con el polimorfismo podemos desarrollar código que no tiene que ser modificado por la introducción en el programa de nuevas subclases o tipos debido a:
- Cambio en las especificaciones.
- Rediseño.