Capítulo 4
Trabajando con clases y objetos en Java

Sobrecarga de métodos y de constructores

La firma de un método es la combinación del nombre y los tipos de los parámetros o argumentos.

La sobrecarga de métodos es la creación de varios métodos con el mismo nombre pero con diferente lista de tipos de parámetros. Java utiliza el número y tipo de parámetros 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 parámetros o argumentos que tiene el método y no por el tipo que devuelve.

Tambien existe la sobrecarga de constructores: Cuando en una clase existen constructores múltiples, se dice que hay sobrecarga de constructores.


Ejemplo

/* Métodos sobrecargados */
int calculaSuma(int x, int y, int z){
    ...
}
int calculaSuma(double x, double y, double z){
    ...
}

/* Error: estos métodos no están sobrecargados */
int calculaSuma(int x, int y, int z){
     ...
}
double calculaSuma(int x, int y, int z){
    ...
}

Ejemplo

/* Usuario4.java */

class Usuario4
{
     String nombre;
     int edad;
     String direccion;

     /* El constructor de la clase Usuario4 esta sobrecargado */
     Usuario4( )
     {
        nombre = null;
        edad = 0;
        direccion = null;
     }

     Usuario4(String nombre, int edad, String direccion)
     {
        this.nombre = nombre;
        this.edad = edad;
        this.direccion = direccion;
     }

     Usuario4(Usuario4 usr)
     {
        nombre = usr.getNombre();
        edad = usr.getEdad();
        direccion = usr.getDireccion();
     }

     void setNombre(String n)
     {
        nombre = n;
     }

     String getNombre()
     {
        return nombre;
     }

     /* El metodo setEdad() está sobrecargado */
     void setEdad(int e)
     {
        edad = e;
     }

     void setEdad(float e)
     {
        edad = (int)e;
     }

     int getEdad()
     {
        return edad;
     }

     void setDireccion(String d)
     {
        direccion = d;
     }

     String getDireccion()
     {
        return direccion;
     }
}

Ejemplo

/* ProgUsuario4.java */

class ProgUsuario4
{
   void imprimeUsuario(Usuario4 usr)
   {
     //   usr.nombre equivale en este caso a usr.getNombre()
     System.out.println("\nNombre: " + usr.nombre );
     System.out.println("Edad: " + usr.getEdad() );
     System.out.println("Direccion: " + usr.getDireccion() +"\n");
   }

   public static void main(String args[])
   {
      ProgUsuario4 prog = new ProgUsuario4( );
      /* Se declaran dos objetos de la clase Usuario4 */
      Usuario4 usr1,usr2;

      /* Se utiliza el constructor por omisión */
      usr1 = new Usuario4( );
      prog.imprimeUsuario(usr1);

     /* Se utiliza el segundo constructor de Usuario4 */
      usr2 = new Usuario4("Eduardo",24,"Mi direccion");
      prog.imprimeUsuario(usr2);

     /* Se utiliza el tercer constructor de Usuario4 */
      usr1 = new Usuario4(usr2);

      usr1.setEdad(50);
      usr2.setEdad(30.45f);

      prog.imprimeUsuario(usr1);
      prog.imprimeUsuario(usr2);
   }
}

«Indice»     «Anterior»     « Siguiente »