La Sobrecarga es uno de los procedimientos mediante el cual Java implementa el polimorfismo(en programación orientada a objetos es la capacidad que tienen los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación)
Un método sobrecargado se utiliza para reutilizar el nombre de un método pero con diferentes argumentos (opcionalmente un tipo diferente de retorno). Las reglas para sobrecargar un método son las siguientes:
Los métodos sobrecargados deben de cambiar la lista de argumento, Pueden cambiar el tipo de retorno, Pueden cambiar el modificador de acceso, Pueden declarar nuevas o más amplias excepciones.Un método puede ser sobrecargado en la misma clase o en una subclase.
Veamos un método que se desea sobrecargar:
Los métodos sobrecargados deben de cambiar la lista de argumento, Pueden cambiar el tipo de retorno, Pueden cambiar el modificador de acceso, Pueden declarar nuevas o más amplias excepciones.Un método puede ser sobrecargado en la misma clase o en una subclase.
Veamos un método que se desea sobrecargar:
public void cambiarTamano(int tamano, String nombre, float patron){ }
Los siguientes métodos son sobrecargas legales del método cambiarTamano():
public void cambiarTamano(int tamano, String nombre){}
public int cambiarTamano(int tamano, float patron){}
public void cambiarTamano(float patron, String nombre) throws IOException{}
Cómo invocar un método sobrecargado::
Lo que define qué método es el que se va a llamar son los argumentos que se envían al mismo durante la llamada. Si se invoca a un método con un String como argumento, se ejecutará el método que tome un String como argumento, si se manda a llamar al mismo método pero con un float como argumento, se ejecutará el método que tome un float como argumento y así sucesivamente. Si se invoca a un método con un argumento que no es definido en ninguna de las versiones sobrecargadas entonces el compilador arrojará un mensaje de error.
Ejemplo de una clase con un método sobrecargado:
public class Sobrecarga {
public void Numeros(int x, int y){
System.out.println("Método que recibe enteros.");
}
public void Numeros(double x, double y){
System.out.println("Método que recibe flotantes.");
}
public void Numeros(String cadena){
System.out.println("Método que recibe una cadena: "+ cadena);
}
public static void main (String... args){
Sobrecarga s = new Sobrecarga();
int a = 1;
int b = 2;
s.Numeros(a,b);
s.Numeros(3.2,5.7);
s.Numeros("Monillo007");
}
}
Al ejecutar el código anterior obtendremos lo siguiente:
Método que recibe enteros.
Método que recibe flotantes.
Método que recibe una cadena: Monillo007
No hay comentarios:
Publicar un comentario