Buscar..
Introducción
El polimorfismo es uno de los conceptos básicos en OOP (Programación Orientada a Objetos) . La idea principal del polimorfismo es que un objeto tiene la capacidad de adoptar diferentes formas. Para lograr eso (polimorfismo), tenemos dos enfoques principales.
Método de sobrecarga
- Ocurre cuando hay dos o más métodos con el mismo nombre, con diferentes parámetros de entrada. El tipo de retorno debe ser el mismo para todos los métodos con el mismo nombre
Método de anulación
- Ocurre cuando el objeto hijo usa la misma definición de método (el mismo nombre con los mismos parámetros), pero tienen implementaciones diferentes.
Usando estos dos enfoques, podemos usar el mismo método / función para comportarnos de manera diferente. Veamos más detalles sobre esto en los siguientes ejemplos.
Método de sobrecarga
La sobrecarga de métodos es la forma de usar el polimorfismo dentro de una clase. Podemos tener dos o más métodos dentro de la misma clase, con diferentes parámetros de entrada.
La diferencia de los parámetros de entrada puede ser:
- Numero de parametros
- Tipo de parámetros (tipo de datos)
- Orden de los parametros
Echemos un vistazo a ellos por separado (Estos ejemplos en java, ya que estoy más familiarizado con eso, lo siento):
Número de parámetros
public class Mathematics { public int add (int a, int b) { return (a + b); } public int add (int a, int b, int c) { return (a + b + c); } public int add (int a, int b, int c, int c) { return (a + b + c + d); } }Mire con cuidado, puede ver que el tipo de retorno del método es el mismo:
int, pero por lo tanto, estos métodos tienen un número diferente de entradas. Esto se llama como método de carga con diferente número de parámetros.PD: Este es solo un ejemplo , no es necesario definir funciones de adición como esta.
Tipo de parametros
public class Mathematics { public void display (int a) { System.out.println("" + a); } public void display (double a) { System.out.println("" + a); } public void display (float a) { System.out.println("" + a); } }Tenga en cuenta que todos los métodos tienen el mismo nombre y el mismo tipo de retorno, mientras que tienen diferentes tipos de datos de entrada.
PS: Este ejemplo es solo para explicar el propósito solamente.
Orden de los parametros
public class Mathematics { public void display (int a, double b) { System.out.println("Numbers are " + a + " and " + b); } public void display (double a, int b) { System.out.println("Numbers are " + a + " and " + b); } }PS: Este ejemplo es también para explicar el propósito solamente.
Método Anulando
La anulación del método es la forma de usar el polimorfismo entre clases. Si una clase se hereda de otra, la primera (subclase) puede anular los métodos de la última (super clase) y cambiar la implementación.
esto se usa cuando la superclase define la implementación más general del método, mientras que la subclase usa una más específica.
Considere el siguiente ejemplo:
Tenemos una clase para mamíferos:
class Mammal {
void whoIam () {
System.out.println("I am a Mammal");
}
}
Luego tenemos una clase para perro, que es un mamífero:
class Dog extends Mammal {
@Override
void whoIam () {
super.whoIam();
System.out.println("I am a Dog!");
}
}
En este ejemplo, definimos el método whoIam() en la clase de Mammal , donde el mamífero dice que es un mamífero. Pero este es un término general, ya que hay muchos mamíferos por ahí. Entonces podemos heredar la clase de Dog clase de Mammal , ya que el perro es un mamífero. Pero, para ser más específicos, el perro es un perro y un mamífero. Por lo tanto, el perro debería decir, I am a Mammal y también I am a Dog . De ahí que puede anular el whoIam() método en el súper clase ( Mammal clase, que es) de la clase sub (el Dog clase).
También podemos llamar al método de la súper clase usando super.whoIam() en Java. Entonces, el Dog se comportará como un perro, mientras que también se comportará como un mamífero.