La sobrecarga de métodos

Es la creación de varios métodos con el mismo nombre pero con diferentes firmas y definiciones. java utiliza el número y tipo de argumentos para seleccionar cuál definición de método ejecutar.

Java diferencia los métodos sobrecargados con base en el número y tipo de argumentos que tiene el método y no por el tipo que devuelve.

Métodos sobrecargados.

Java permite métodos sobrecargados (overloaded), es decir métodos distintos con el mismo nombre que se diferencian por el número y/o tipo de los argumentos.

A la hora de llamar a un método sobrecargado, Java sigue unas reglas para determinar el

método concreto que debe llamar:

1. Si existe el método cuyos argumentos se ajustan exactamente al tipo de los argumentos de la llamada (argumentos actuales), se llama ese método.

2. Si no existe un método que se ajuste exactamente, se intenta promover los argumentos

actuales al tipo inmediatamente superior (por ejemplo char a int, int a long, float a double, etc.) y se llama el método correspondiente.

3. Si sólo existen métodos con argumentos de un tipo más amplio (por ejemplo, long en vez de int), el programador debe hacer un cast explícito en la llamada, responsabilizándose de esta manera de lo que pueda ocurrir.

4. El valor de retorno no influye en la elección del método sobrecargado. En realidad es imposible saber desde el propio método lo que se va a hacer con él. No es posible crear dos métodos sobrecargados, es decir con el mismo nombre, que sólo difieran en el valor de retorno.

Diferente de la sobrecarga de métodos es la redefinición. Una clase puede redefinir(override) un método heredado de una superclase. Redefinir un método es dar una nueva definición.

En este caso el método debe tener exactamente los mismos argumentos en tipo y número que el método redefinido. Este tema se verá de nuevo al hablar de la herencia.