Els constructors són un concepte fonamental en la programació orientada a objectes (POO) en Java. Són mètodes especials que s'utilitzen per inicialitzar objectes. Quan es crea un objecte d'una classe, el constructor és cridat automàticament per assignar valors inicials als atributs de l'objecte.

Conceptes Clau

  1. Definició de Constructors:

    • Un constructor és un mètode especial que té el mateix nom que la classe.
    • No té cap tipus de retorn, ni tan sols void.
    • S'executa automàticament quan es crea un objecte de la classe.
  2. Tipus de Constructors:

    • Constructor per Defecte: Un constructor sense paràmetres.
    • Constructor Parametritzat: Un constructor que accepta arguments per inicialitzar els atributs de l'objecte.
  3. Sobrecàrrega de Constructors:

    • Java permet tenir múltiples constructors en una classe, cadascun amb diferents llistes de paràmetres.

Exemples Pràctics

Constructor per Defecte

public class Cotxe {
    String marca;
    String model;

    // Constructor per defecte
    public Cotxe() {
        marca = "Desconeguda";
        model = "Desconegut";
    }

    public void mostrarDetalls() {
        System.out.println("Marca: " + marca + ", Model: " + model);
    }

    public static void main(String[] args) {
        Cotxe cotxe1 = new Cotxe();
        cotxe1.mostrarDetalls(); // Sortida: Marca: Desconeguda, Model: Desconegut
    }
}

Constructor Parametritzat

public class Cotxe {
    String marca;
    String model;

    // Constructor parametritzat
    public Cotxe(String marca, String model) {
        this.marca = marca;
        this.model = model;
    }

    public void mostrarDetalls() {
        System.out.println("Marca: " + marca + ", Model: " + model);
    }

    public static void main(String[] args) {
        Cotxe cotxe1 = new Cotxe("Toyota", "Corolla");
        cotxe1.mostrarDetalls(); // Sortida: Marca: Toyota, Model: Corolla
    }
}

Sobrecàrrega de Constructors

public class Cotxe {
    String marca;
    String model;
    int any;

    // Constructor per defecte
    public Cotxe() {
        marca = "Desconeguda";
        model = "Desconegut";
        any = 0;
    }

    // Constructor parametritzat
    public Cotxe(String marca, String model) {
        this.marca = marca;
        this.model = model;
        this.any = 0;
    }

    // Constructor parametritzat amb any
    public Cotxe(String marca, String model, int any) {
        this.marca = marca;
        this.model = model;
        this.any = any;
    }

    public void mostrarDetalls() {
        System.out.println("Marca: " + marca + ", Model: " + model + ", Any: " + any);
    }

    public static void main(String[] args) {
        Cotxe cotxe1 = new Cotxe();
        Cotxe cotxe2 = new Cotxe("Toyota", "Corolla");
        Cotxe cotxe3 = new Cotxe("Honda", "Civic", 2020);

        cotxe1.mostrarDetalls(); // Sortida: Marca: Desconeguda, Model: Desconegut, Any: 0
        cotxe2.mostrarDetalls(); // Sortida: Marca: Toyota, Model: Corolla, Any: 0
        cotxe3.mostrarDetalls(); // Sortida: Marca: Honda, Model: Civic, Any: 2020
    }
}

Exercicis Pràctics

Exercici 1: Constructor per Defecte

Descripció: Crea una classe Persona amb atributs nom i edat. Defineix un constructor per defecte que inicialitzi nom a "Desconegut" i edat a 0. Afegeix un mètode per mostrar els detalls de la persona.

Solució:

public class Persona {
    String nom;
    int edat;

    // Constructor per defecte
    public Persona() {
        nom = "Desconegut";
        edat = 0;
    }

    public void mostrarDetalls() {
        System.out.println("Nom: " + nom + ", Edat: " + edat);
    }

    public static void main(String[] args) {
        Persona persona1 = new Persona();
        persona1.mostrarDetalls(); // Sortida: Nom: Desconegut, Edat: 0
    }
}

Exercici 2: Constructor Parametritzat

Descripció: Modifica la classe Persona per afegir un constructor parametritzat que accepti nom i edat com a arguments. Crea un objecte Persona utilitzant aquest constructor i mostra els seus detalls.

Solució:

public class Persona {
    String nom;
    int edat;

    // Constructor per defecte
    public Persona() {
        nom = "Desconegut";
        edat = 0;
    }

    // Constructor parametritzat
    public Persona(String nom, int edat) {
        this.nom = nom;
        this.edat = edat;
    }

    public void mostrarDetalls() {
        System.out.println("Nom: " + nom + ", Edat: " + edat);
    }

    public static void main(String[] args) {
        Persona persona1 = new Persona("Joan", 25);
        persona1.mostrarDetalls(); // Sortida: Nom: Joan, Edat: 25
    }
}

Resum

En aquesta secció, hem après sobre els constructors en Java, incloent-hi els constructors per defecte i parametritzats, així com la sobrecàrrega de constructors. Els constructors són essencials per inicialitzar objectes i poden ser utilitzats per assignar valors inicials als atributs de l'objecte. Hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. En la següent secció, explorarem la herència en Java, un altre concepte clau de la programació orientada a objectes.

Curs de Programació en Java

Mòdul 1: Introducció a Java

Mòdul 2: Flux de Control

Mòdul 3: Programació Orientada a Objectes

Mòdul 4: Programació Orientada a Objectes Avançada

Mòdul 5: Estructures de Dades i Col·leccions

Mòdul 6: Gestió d'Excepcions

Mòdul 7: Entrada/Sortida de Fitxers

Mòdul 8: Multithreading i Concurrència

Mòdul 9: Xarxes

Mòdul 10: Temes Avançats

Mòdul 11: Frameworks i Llibreries de Java

Mòdul 12: Construcció d'Aplicacions del Món Real

© Copyright 2024. Tots els drets reservats