Sobrecarga de métodos

Nuestro nuevo e interesante tema de hoy es la sobrecarga de métodos . Tenga cuidado: la sobrecarga de métodos no debe confundirse con la anulación de métodos.

A diferencia de la anulación, la sobrecarga es una operación muy sencilla. En realidad, no es una operación sobre métodos, aunque a veces se le conoce con el terrible término polimorfismo paramétrico .

El problema aquí es que todos los métodos dentro de una clase deben tener nombres únicos. Bueno, eso no es del todo exacto. Bueno, más exactamente, eso no es exacto en absoluto. El nombre del método no tiene que ser único. Lo que debe ser único es la unión del nombre del método y los tipos de parámetros del método. Esta unión se conoce como la firma del método.

Ejemplos:

Código Descripción
public void print();
public void print2();
Esto está permitido. Los dos métodos tienen nombres únicos.
public void print();
public void print(int n);
Y también esto. Los dos métodos tienen nombres únicos (firmas).
public void print(int n, int n2);
public void print(int n);
Los métodos siguen siendo únicos.
public int print(int a);
public void print(int n);
Pero esto no está permitido . Los métodos no son únicos . A pesar de que devuelven diferentes tipos.
public int print(int a, long b);
public long print(long b, int a);
Pero puedes hacer esto . Los parámetros del método son únicos.

La firma incluye el nombre del método y los tipos de parámetros . No incluye el tipo de retorno del método ni los nombres de los parámetros . Una clase no puede tener dos métodos con las mismas firmas: el compilador no sabrá a cuál llamar.

Los nombres de los parámetros no importan , ya que se pierden durante la compilación. Una vez que se compila un método, solo se conocen su nombre y tipos de parámetros. El tipo de devolución no se pierde, pero el resultado del método no tiene que asignarse a nada, por lo que tampoco se incluye en la firma.

De acuerdo con los principios de OOP , el polimorfismo esconde diferentes implementaciones detrás de una única interfaz. Cuando llamamos al System.out.println()método, por ejemplo, se llaman diferentes métodos según los argumentos que se pasan. Esto es polimorfismo en acción.

Es por eso que diferentes métodos con nombres idénticos contenidos en la misma clase se consideran una forma débil de polimorfismo.