jueves, 24 de mayo de 2012

2.6 Sobrecarga de métodos.


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

package sobrekarga;


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