Tipos de polimorfismo en Java | Explicado

Tipos de polimorfismo en Java | Explicado
El polimorfismo es una capacidad que permite que un objeto tenga muchas formas o en palabras simples, nos permite crear una sola tarea de varias maneras. Por ejemplo, el polimorfismo nos permite crear múltiples métodos con el mismo nombre, pero la implementación de cada método será diferente del otro método. En Java, el concepto de polimorfismo se puede implementar en tiempo de ejecución o en tiempo de compilación.

Este artículo presenta una visión general exhaustiva de los tipos de polimorfismo como se enumera a continuación:

  • ¿Qué es el polimorfismo en Java?
  • Polimorfismo estático/en tiempo de compilación en Java
  • Polimorfismo dinámico/de tiempo de ejecución en Java

Entonces empecemos!

¿Qué es el polimorfismo en Java?

La palabra polimorfismo es una combinación de dos palabras griegas escuela politécnica significa muchos y morfos significa formularios, por lo tanto, combinadamente la palabra polimorfismo medio Muchas/formas múltiples. El polimorfismo nos permite realizar una tarea específica de varias maneras

Ejemplo

Consideremos los ejemplos en el mundo real en el mundo real para comprender el concepto de polimorfismo:

Sonidos de animales: Ruge de león, ladridos de perros, vecinos de caballos, etc.

Ahora comprendamos el concepto anterior en términos de programación de Java, en este ejemplo, el Animales es una clase, y "Sounds ()" es su método:

Aquí Animales es una clase general que no puede restringirse con un solo sonido como un rugido, o corteza, etc. Entonces, una clase tendrá una implementación genérica que las otras clases pueden extender.

Además, León, Perro, y Caballo (subclases) puede extender las propiedades de la clase principal Animal. Las clases infantiles heredarán la función de su clase principal y pueden anular la implementación de esa función.

Entonces, el polimorfismo en Java le permite utilizar el mismo método para realizar diversas funcionalidades. En Java, el polimorfismo se puede lograr mediante tiempo de compilación o tiempo de ejecución.

Polimorfismo estático/en tiempo de compilación en Java

En el polimorfismo en tiempo de compilación, los objetos de los CALS están limitados con los métodos en tiempo de compilación. El polimorfismo en tiempo de compilación es manejado por el compilador y respalda el concepto de sobrecarga de métodos.

La sobrecarga del método en el polimorfismo de tiempo de compilación permite que una clase cree múltiples métodos con el mismo nombre pero diferentes implementaciones en términos de parámetros. Y existen algunas reglas para estos parámetros como se enumeran a continuación:

Podemos crear múltiples métodos con el mismo nombre pero con una secuencia/orden de parámetros diferente.

Podemos crear más de un método con el mismo nombre pero con diferentes tipos de datos de parámetros:

Podemos crear múltiples métodos con el mismo nombre pero con un número diferente de parámetros.

Consideremos un ejemplo para la profunda comprensión del polimorfismo de tiempo de compilación:

Ejemplo

En este ejemplo creamos dos clases:

Multiplicación.Java

El Multiplicación La clase crea tres métodos con el mismo nombre "producto()", El primer método toma dos valores enteros, el segundo toma dos valores dobles y el tercero toma tres valores enteros:

paquete principal;
multiplicación de clase pública
int producto (int num1, int num2)
return num1 * num2;

producto doble (doble num1, doble num2)
return num1 * num2;

int producto (int num1, int num2, int num3)
return num1 * num2 * num3;

La captura de pantalla del código anterior será así:

Principal.Java

Dentro de Principal clase, creamos el objeto de la clase de multiplicación y llamamos los tres métodos del Multiplicación clase:

paquete principal;
clase pública Main
public static void main (string [] args)
Multiplicación obj = nueva multiplicación ();
Sistema.afuera.println ("resultado de dos valores int:" + obj.producto (5, 12));
Sistema.afuera.println ("resultado de tres valores int:" + obj.producto (4, 15, 2));
Sistema.afuera.println ("Resultado de valores dobles:" + obj.Producto (5.5, 2.67));

El código completo del Principal La clase se muestra en la siguiente figura:

La salida irá así:

De la salida anterior observamos que:

Cuando pasamos los dos En t valores entonces el producto Método que tiene dos En t Los parámetros se ejecutan.

Cuando pasamos los tres En t valores entonces el producto Método que tiene tres En t Los parámetros se ejecutan.

Del mismo modo, cuando pasamos los dos doble valores entonces el producto Método que tiene dos doble Los parámetros se ejecutan.

Polimorfismo dinámico/de tiempo de ejecución en Java

En tiempo de ejecución polimorfismo, los objetos están limitados con los métodos en tiempo de ejecución (enlace dinámico). El polimorfismo dinámico o de tiempo de ejecución respalda el concepto de Método primordial.

  • En OOP, el término primordial se refiere que anulan las funcionalidades de los métodos existentes.
  • En el polimorfismo de tiempo de ejecución, el tipo y la lista del parámetro deben ser los mismos en el método anulado.
  • El tipo de retorno del método debe ser el mismo en superclase y subclase.
  • Una clase madre que tiene un método declarado con final, privado o estático no se puede anular en la subclase, sin embargo, un método estático puede ser redeclarado en la clase infantil.

Echemos un vistazo al ejemplo otorgado por la profunda comprensión del polimorfismo de tiempo de ejecución.

Ejemplo

El siguiente fragmento de código crea tres clases: Persona, empleado, y Departamento, el Persona La clase es una clase padre, la Empleado la clase se extiende Persona clase y Departamento La clase entra Empleado clase.

persona de clase
public void print ()
Sistema.afuera.println ("Esta es una clase de persona");


El empleado de la clase extiende a la persona
public void print ()
Sistema.afuera.println ("Esta es una clase de empleado");


El departamento de clase extiende a los empleados
public void print ()
Sistema.afuera.println ("Esta es la clase de departamento");


clase pública runtimeExample
public static void main (string [] args)
Persona per = nueva persona ();
Persona emp = nuevo empleado ();
Departamento de persona = nuevo departamento ();
por.imprimir();
Embem.imprimir();
departamento.imprimir();

Las clases de los niños extienden el imprimir() Método de sus clases de padres y también tienen su propia implementación de ese método print (). Y dentro del método principal, creamos el objeto de cada clase y llamamos al imprimir() Método con el objeto de clase respectivo. El código y la salida completos se proporcionan en la siguiente captura de pantalla:

La salida anterior verifica que cuando llamamos las funciones de impresión con cada objeto de clase infantil, anulan la implementación de la función de impresión de clase principal ().

Conclusión

El polimorfismo nos permite crear múltiples métodos con el mismo nombre pero con diferentes implementaciones en las clases de padres e hijos. Se puede lograr en tiempo de compilación, lo que respalda el concepto de sobrecarga de métodos o en tiempo de ejecución que respalda el concepto de anulación. Este artículo presenta una descripción detallada del tiempo de ejecución y el polimorfismo en tiempo de compilación y explica qué es el polimorfismo, sus tipos y reglas para implementar cada tipo.