Sobrecarga de constructores en Java

Última actualización: julio 24

Antes de explicar la sobrecarga de constructores en Java, voy a recordar brevemente que son los constructores y que es la sobrecarga.

Los constructores son métodos de la clase con el mismo nombre que esta, que se emplean para instanciar objetos de la misma.

La sobrecarga de métodos consiste en tener varios métodos distintos con el mismo nombre, siempre y cuando acepten distintos tipos de parámetros. De otra forma, Java no tendría posibilidad de distinguirlos y saber a que método nos referimos cuando lo llamáramos.

Al igual que el resto de métodos de la Clase, los constructores soportan sobrecarga. En el caso de los constructores, la sobrecarga es muy útil para poder tener varios constructores con los que generar objetos de la Clase, con distinto número de parámetros. Recuerda que estamos obligados a que los constructores tengan el mismo nombre que la Clase.

Veamos como funciona todo esto.

Actividad: Sobrecarga de constructores

  1. Abre el el IDE que estés empleando para programar en Java.
  2. Usando la clase Coche ya definida, vamos a implementar varios constructores adicionales. Estos métodos tendrán el mismo nombre que la Clase y podremos crear tantos como queramos siempre y cuando acepten distintos parámetros.
  3. Añadamos el siguiente constructor a la clase Coche:
public Coche(int numeroPuertas, String propietario, String color, String combustible) {
    this.numeroPuertas = numeroPuertas;
    this.propietario = propietario;
    this.color = color;
    this.combustible = combustible;
    numCoches++;
} 

La Clase Coche queda como:

public class Coche{
    int CV;
    int numeroPuertas;
    int añoFabricacion;
    String propietario;
    String color;
    String combustible;
    boolean encendido;
    private int porcentajeTanqueLleno;
    private static int numCoches=0;
    
    //Constructores
    public Coche(int np, String pro){
        this.numeroPuertas = np;
        this.propietario=pro;
        numCoches++; 
    }

    public Coche(int numeroPuertas, String propietario, String color, String combustible) {
        this.numeroPuertas = numeroPuertas;
        this.propietario = propietario;
        this.color = color;
        this.combustible = combustible;
        numCoches++;
    }
    
    //métodos de la clase
    public void arranque(){
        if (porcentajeTanqueLleno>5){
            encendido = true;
        }
    }
    public void parado(){
        encendido = false;
    }
    public int llenadoTanque(){
        if (porcentajeTanqueLleno<80){
            porcentajeTanqueLleno = 100;
        }
        return porcentajeTanqueLleno;
    }
    //metodos getters and setters
    public int getporcentajeTanqueLleno(){
        return this.porcentajeTanqueLleno;
    }
    public void setporcentajeTanqueLleno(int val){
        this.porcentajeTanqueLleno=val;
    }
    public static int getNumCoches(){
        return numCoches;
    }
}
  1. Ahora, tenemos dos constructores disponibles en la clase Coche. Usemos ambos en nuestro programa principal:
public class PracticandoConClaseCoche {
    public static void main(String args[]) {
      Coche primerCoche;
      Coche segundoCoche;
      primerCoche = new Coche (5,"Jesús Garcia");
      segundoCoche = new Coche (3,"Laura Perez","blanco","gasolina");
      System.out.println("Existen "+Coche.getNumCoches()+" coches");
      System.out.println("El propietario del primer coche es "+primerCoche.propietario+". Y su color es"+primerCoche.color);
      System.out.println("El propietario del segundo coche es "+segundoCoche.propietario+". Y su color es"+segundoCoche.color);
    }
}

Como no hemos creado los métodos getters para los parámetros propietario y color, llamamos a los parámetros directamente por su nombre, en lugar de usar los métodos getters

El resultado de ejecutar el programa sería:

Existen 2 coches
El propietario del primer coche es Jesús Garcia. Y su color esnull
El propietario del segundo coche es Laura Perez. Y su color esblanco

NOTA:

Este post es parte de la colección “Java”. Puedes ver el índice de esta colección aquí.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.