La palabra polimorfismo significa tener muchas formas. En palabras simples, podemos definir el polimorfismo de Java como la capacidad de un mensaje de mostrarse en más de una forma. En este artículo, aprenderemos qué es el polimorfismo y su tipo.
es igual al método java
Ilustración de la vida real del polimorfismo en Java : Una persona al mismo tiempo puede tener diferentes características. Como un hombre es al mismo tiempo padre, marido y empleado. Entonces la misma persona posee diferentes comportamientos en diferentes situaciones. Esto se llama polimorfismo.
¿Qué es el polimorfismo en Java?
El polimorfismo se considera una de las características importantes de la programación orientada a objetos. El polimorfismo nos permite realizar una misma acción de diferentes maneras. En otras palabras, el polimorfismo le permite definir una interfaz y tener múltiples implementaciones. La palabra poli significa muchas y morphs significa formas, por lo que significa muchas formas.
Tipos de polimorfismo de Java
En Java el polimorfismo se divide principalmente en dos tipos:
- Polimorfismo en tiempo de compilación
- Polimorfismo en tiempo de ejecución
Polimorfismo en tiempo de compilación en Java
También se le conoce como polimorfismo estático. Este tipo de polimorfismo se logra mediante sobrecarga de funciones o sobrecarga de operadores.
Nota: Pero Java no admite la sobrecarga del operador.

Sobrecarga de métodos
Cuando hay varias funciones con el mismo nombre pero con diferentes parámetros, se dice que estas funciones son sobrecargado . Las funciones pueden sobrecargarse mediante cambios en el número de argumentos y/o un cambio en el tipo de argumentos.
Ejemplo 1:
Java
// Java Program for Method overloading> // By using Different Types of Arguments> // Class 1> // Helper class> class> Helper {> >// Method with 2 integer parameters> >static> int> Multiply(>int> a,>int> b)> >{> >// Returns product of integer numbers> >return> a * b;> >}> >// Method 2> >// With same name but with 2 double parameters> >static> double> Multiply(>double> a,>double> b)> >{> >// Returns product of double numbers> >return> a * b;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>5.5>,>6.3>));> >}> }> |
>
>Producción
8 34.65>
Ejemplo 2:
Java
// Java program for Method Overloading> // by Using Different Numbers of Arguments> // Class 1> // Helper class> class> Helper {> >// Method 1> >// Multiplication of 2 numbers> >static> int> Multiply(>int> a,>int> b)> >{> >// Return product> >return> a * b;> >}> >// Method 2> >// // Multiplication of 3 numbers> >static> int> Multiply(>int> a,>int> b,>int> c)> >{> >// Return product> >return> a * b * c;> >}> }> // Class 2> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Calling method by passing> >// input as in arguments> >System.out.println(Helper.Multiply(>2>,>4>));> >System.out.println(Helper.Multiply(>2>,>7>,>3>));> >}> }> |
>
matemáticas.pow java
>Producción
8 42>
Subtipos de polimorfismo en tiempo de compilación
1. Sobrecarga de funciones
Es una característica de C++ donde varias funciones pueden tener el mismo nombre pero con diferentes listas de parámetros. El compilador decidirá qué función llamar en función del número y los tipos de argumentos pasados a la función.
2. Sobrecarga del operador
Es una característica de C++ donde a los operadores como +, -, *, etc. se les puede dar significados adicionales cuando se aplican a tipos de datos definidos por el usuario.
3. Plantilla
es una característica poderosa en C++ que nos permite escribir funciones y clases genéricas. Una plantilla es un modelo para crear una familia de funciones o clases.
Polimorfismo en tiempo de ejecución en Java
También se conoce como envío de método dinámico. Es un proceso en el que una llamada de función al método anulado se resuelve en tiempo de ejecución. Este tipo de polimorfismo se logra mediante la anulación de método. Anulación del método , por otro lado, ocurre cuando una clase derivada tiene una definición para una de las funciones miembro de la clase base. Se dice que esa función base es anulado .
Ejemplo
Java
// Java Program for Method Overriding> // Class 1> // Helper class> class> Parent {> >// Method of parent class> >void> Print()> >{> >// Print statement> >System.out.println(>'parent class'>);> >}> }> // Class 2> // Helper class> class> subclass1>extends> Parent {> >// Method> >void> Print() { System.out.println(>'subclass1'>); }> }> // Class 3> // Helper class> class> subclass2>extends> Parent {> >// Method> >void> Print()> >{> >// Print statement> >System.out.println(>'subclass2'>);> >}> }> // Class 4> // Main class> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating object of class 1> >Parent a;> >// Now we will be calling print methods> >// inside main() method> >a =>new> subclass1();> >a.Print();> >a =>new> subclass2();> >a.Print();> >}> }> |
>
>Producción
subclass1 subclass2>
Explicación del código anterior:
Aquí, en este programa, cuando se crea un objeto de una clase secundaria, se llama al método dentro de la clase secundaria. Esto se debe a que la clase secundaria anula el método de la clase principal. Dado que el método se anula, este método tiene más prioridad que el método principal dentro de la clase secundaria. Entonces, se ejecuta el cuerpo dentro de la clase secundaria.
Subtipo de polimorfismo en tiempo de ejecución
i. Funciones virtuales
Permite que un objeto de una clase derivada se comporte como si fuera un objeto de la clase base. La clase derivada puede anular la función virtual de la clase base para proporcionar su propia implementación. La llamada a la función se resuelve en tiempo de ejecución, según el tipo real de objeto.
Diagrama –

El polimorfismo en Java es un concepto que permite que objetos de diferentes clases sean tratados como objetos de una clase común. Permite que los objetos se comporten de manera diferente según su tipo de clase específico.
Ventajas del polimorfismo en Java
- Aumenta la reutilización del código al permitir que objetos de diferentes clases sean tratados como objetos de una clase común.
- Mejora la legibilidad y el mantenimiento del código al reducir la cantidad de código que debe escribirse y mantenerse.
- Admite enlace dinámico, lo que permite llamar al método correcto en tiempo de ejecución, según la clase real del objeto.
- Permite tratar objetos como un solo tipo, lo que facilita la escritura de código genérico que pueda manejar objetos de diferentes tipos.
Desventajas del polimorfismo en Java
- Puede hacer que sea más difícil comprender el comportamiento de un objeto, especialmente si el código es complejo.
- Esto puede provocar problemas de rendimiento, ya que el comportamiento polimórfico puede requerir cálculos adicionales en tiempo de ejecución.