Polimorfismo: El viejo desconocido.
- Federico Machado

- 13 feb 2025
- 2 Min. de lectura
Cuando me toca entrevistar gente para Java Senior, una de las preguntas que más me gusta hacer para romper el hielo es: ¿Qué es el polimorfismo? Siento que es un concepto que muchos tienen por asumido que entienden y conocen, pero a la hora de la verdad me ha sorprendido escuchar como gente con muchos años de experiencia, flaquea al contestar esta pregunta de un concepto que me parece un pilar fundamental de la programación orientada a objetos. ¿Sabías que por ejemplo, hay dos tipos de polimorfismo? Dependiendo de dónde vengas y cómo te hayas instruido, es posible que respondas a esta pregunta de manera diferente.
La primera definición se refiere al polimorfismo estático, que trata del comportamiento en tiempo de compilación a la hora de definir métodos, en función de los parámetros de estos. Es también a veces definido como sobrecarga de métodos. Todos los métodos tienen el mismo nombre pero tienen diferentes tipos de parámetros o diferentes cantidades de parámetros. Un ejemplo clásico de este comportamiento es un método sumar(int x, int y) y un método sumar(double x, double y).
La otra definición es aquella del polimorfismo dinámico, y es a la que apunto que respondan en las entrevistas. Se trata de una manera de redefinir comportamientos a través de herencia para ahorrar código y mantenerlo lo más desacoplado posible. Otro de los ejemplos clásicos que trata de explicar este concepto es el tener una clase FiguraGeométrica, con un método que se llame public abstract int calcularArea(). Que deberá ser implementado por quienes extiendan esta clase. Es de este modo que en la clase triángulo tenemos public int calcularArea() que devuelve la base por la altura dividido dos, y en la clase rectángulo tenemos que este método devuelve la base por la altura. Si estamos recorriendo una lista de FiguraGeómetrica, a la hora de llamar el calcularArea(), se llamará al método de la clase concreta (Ya sea triángulo o rectángulo) con la implementación que definimos. Este concepto nos ayuda mucho a mejorar el desacoplamiento y la modificabilidad del código, ya que si en el futuro quiero agregar una nueva figura geométrica, no voy a tener que agregar ifs para que dependiendo de la clase que agrego, haga una cosa u otra, si no que todo se va a ejecutar polimórficamente en función de la clase concreta.
Generalmente si en nuestro código tenemos un switch o varios ifs preguntando si nuestra variable es una instancia de cierta clase (Utilizando por ejemplo instanceof) , quizás deberíamos replantearnos nuestra solución para utilizar polimorfismo dinámico. ¿Les ha pasado que han tenido que usar polimorfismo para hacer más manejable el código?




Scholarships in Ireland can make a big difference for students planning to study overseas, especially when it comes to managing tuition and living costs. Having clear information about eligibility, application timelines, and funding options really helps in decision-making. Education Vibes shares useful insights that make understanding scholarships in Ireland much easier for students exploring international education.
The Mahindra XUV 7XO has been launched at a price of Rs. 13.66 lakh (ex-showroom). The Mahindra XUV 7XO has achieved a five star rating in BNCAP
The Mahindra XUV 7XO has been launched at a price of Rs. 13.66 lakh (ex-showroom). The Mahindra XUV 7XO has achieved a five star rating in BNCAP
Connecting where are draper tools made with its reputation for durability enriches professional understanding. The College of Contract Management delivers courses that emphasise quality and best practice. Learners develop deeper industry awareness. Many have improved their career prospects through such practical learning.
Celebrate love this Valentine’s Day with indulgent flavorsTop 5 Whiskies to Pair with Chocolate, blending rich cocoa notes, and perfect pairings for a romantic evening together.