1. Inicio
  2. Tecnología
  3. Polimorfismo

Significado de Polimorfismo

Sustantivo masculino. Del griego polýmorphos, «de muchas formas», compuesto de polý- («mucho») y morphé («forma»). En informática calca el inglés polymorphism.

El polimorfismo es la capacidad de un mismo método o una misma operación para comportarse de forma distinta según el tipo de objeto sobre el que se invoca, aunque se llame de la misma manera en todos los casos.

Es uno de los cuatro pilares habituales de la programación orientada a objetos, junto con la abstracción, el encapsulamiento y la herencia, y suele apoyarse en esta última para funcionar.

Qué es el polimorfismo

Pensemos en varias clases —Circulo, Cuadrado, Triangulo— que heredan de una clase común Figura, y todas definen un método llamado area(). Gracias al polimorfismo, un mismo fragmento de código puede recorrer una lista de figuras distintas y llamar a area() sobre cada una sin necesidad de comprobar antes de qué tipo concreto es: cada objeto ejecuta su propia versión del método, y el resultado es el correcto en cada caso.

Lo que hace posible este comportamiento es que el nombre del método es el mismo en todas las clases relacionadas, pero cada una implementa por dentro los pasos necesarios para su propio caso. Quien escribe el código que usa esos objetos no necesita saber, en el momento de escribirlo, con qué figura concreta va a trabajar en cada ejecución.

Lo estudia la programación orientada a objetos, dentro del diseño de jerarquías de clases, y su principal ventaja es que permite añadir nuevos tipos de objetos —una nueva figura, por ejemplo— sin tener que modificar el código que ya sabe trabajar con el grupo general.

Origen de la palabra polimorfismo

Del griego polýmorphos, «de muchas formas», compuesto de polý-, «mucho, numeroso», y morphé, «forma, figura». El término se usaba ya en biología y en mineralogía para describir organismos o sustancias que adoptan formas distintas. En informática se adoptó como calco del inglés polymorphism para describir un método que adopta comportamientos distintos según el objeto que lo ejecuta.

El concepto se consolidó junto con la programación orientada a objetos, a partir de los años setenta y ochenta, cuando los lenguajes empezaron a permitir que distintas clases relacionadas compartieran el nombre de un método aunque cada una lo implementara de forma diferente. Se convirtió pronto en uno de los principios que distinguen este paradigma de estilos de programación anteriores.

Tipos de polimorfismo

TipoEn qué consisteEjemplo
De inclusión (por herencia)Distintas clases que heredan de una común implementan un mismo método a su manera.Circulo y Cuadrado, ambos con su propio método area().
ParamétricoUn mismo código funciona con datos de tipos distintos gracias a un parámetro genérico.Una función que ordena una lista, sin importar si contiene números o textos.
De sobrecargaVarios métodos comparten un mismo nombre, pero difieren en el número o el tipo de sus parámetros.Un método sumar() que acepta dos números enteros o dos números decimales.

Ejemplos de uso de polimorfismo

Gracias al polimorfismo, el programa llama al mismo método reproducir() tanto si el objeto es un archivo de audio como si es un archivo de vídeo.

El profesor explicó el polimorfismo con el ejemplo de distintos animales que responden de forma distinta a un mismo método hacerSonido().

Al añadir un nuevo tipo de figura, no hizo falta modificar el código existente gracias al polimorfismo del método calcularArea().

En la revisión de código, señalaron que el polimorfismo permitiría eliminar varias comprobaciones repetidas de tipo dentro del mismo método.

Sinónimos y palabras relacionadas

Sinónimos: no tiene sinónimos exactos en este sentido técnico.

Antónimos: monomorfismo (uso poco frecuente, referido a un comportamiento único sin variantes).

No es lo mismo que:

Preguntas frecuentes sobre polimorfismo

¿Para qué sirve el polimorfismo en programación?

Sirve para que un mismo código pueda trabajar con objetos de tipos distintos sin necesidad de comprobar de qué tipo es cada uno, y para poder añadir nuevos tipos de objetos sin modificar el código que ya funciona con el grupo general.

¿El polimorfismo necesita siempre herencia?

El tipo más habitual, el polimorfismo por herencia, sí depende de que varias clases compartan una clase común. Pero existen otras formas, como la sobrecarga de métodos o el polimorfismo paramétrico, que no requieren una jerarquía de herencia.

¿Qué es la sobrecarga de métodos?

Es una forma de polimorfismo en la que varios métodos comparten el mismo nombre dentro de una clase, pero se diferencian en el número o el tipo de los parámetros que reciben, de modo que el programa elige la versión adecuada según cómo se le llame.

Ver también