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 argumentos.
- 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.
Reglas de la sobrecarga y sobreescritura de métodos:
Ahora que hemos visto ambas formas de reescribir métodos, revisemos las reglas y diferencias entre ambos tipos de reescritura:
- Argumentos: En un método sobrecargado los argumentos deben de cambiar mientras que en un método sobreescrito NO deben cambiar.
- El tipo de retorno: En un método sobrecargado el tipo de retorno puede cambiar, en un método sobreescrito NO puede cambiar, excepto por subtipos del tipo declarado originalmente.
- Excepciones: En un método sobrecargado las excepciones pueden cambiar, en un método sobreescrito pueden reducirse o eliminarse pero NO deben de arrojarse excepciones nuevas o más amplias.
- Acceso: En un método sobrecargado puede cambiar, en un método sobreescrito el acceso NO debe de hacerse más restrictivo (puede ser menos restrictivo).
- Al invocar: En un método sobrecargado los argumentos son los que determinan qué método es el que se invocará, en un método sobreescrito el tipo de objeto determina qué método es elegido.
Ejemplo :
clase base
public class Main {
public static void main(String[] args) {
// TODO code application logic here
articulo objarticulo=new articulo();
objarticulo.fijarprecio("70");
objarticulo.mostrarprecio();
edad objedad= new edad();
objedad.poneredad();
objedad.mostraredad();
}
}
Clase articulo
package sobrekarga;
public class articulo {
private double precio;
public void fijarprecio(){
precio=5.50;
}
public void fijarprecio(String precio){
System.out.println("No es un valor");
}
public void fijaprecio (double precio){
this.precio=precio;
}
public void mostrarprecio(){
System.out.printf("precio es %.2f",precio);
System.out.println();
}
}
Clase edad
package sobrekarga;
public class edad {
private int edad;
public void poneredad(){
edad= 22;
}
public void poneredad(String edad){
System.out.println("no es una edad");
}
public void poneredad(int edad){
this.edad= edad;
}
public void mostraredad(){
System.out.printf("la edad es : %d ",edad);
System.out.println();
}
}
No hay comentarios:
Publicar un comentario