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
-
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.
-
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.
-
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
- Introducció a Java
- Configuració de l'Entorn de Desenvolupament
- Sintaxi i Estructura Bàsica
- Variables i Tipus de Dades
- Operadors
Mòdul 2: Flux de Control
Mòdul 3: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Mètodes
- Constructors
- Herència
- Polimorfisme
- Encapsulació
- Abstracció
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
- Lectura de Fitxers
- Escriptura de Fitxers
- Fluxos de Fitxers
- BufferedReader i BufferedWriter
- Serialització
Mòdul 8: Multithreading i Concurrència
- Introducció al Multithreading
- Creació de Fils
- Cicle de Vida dels Fils
- Sincronització
- Utilitats de Concurrència
Mòdul 9: Xarxes
- Introducció a les Xarxes
- Sockets
- ServerSocket
- DatagramSocket i DatagramPacket
- URL i HttpURLConnection