Konstruktory w Javie to specjalne metody używane do inicjalizowania nowych obiektów. Ich główną funkcją jest ustawienie początkowego stanu obiektu poprzez przypisanie wartości do jego pól. Konstruktor jest wywoływany automatycznie w momencie tworzenia nowego obiektu przy użyciu operatora new
.
Charakterystyka konstruktorów:
- Nazwa konstruktora musi być taka sama jak nazwa klasy.
- Konstruktor nie ma typu zwrotnego, nawet
void
. - Można zdefiniować wiele konstruktorów w jednej klasie, używając przeciążenia konstruktorów (overloading) — różnią się one listą parametrów.
Podstawowe Użycie
Przykład:
public class Samochod {
private String marka;
private int rok;
// Konstruktor
public Samochod(String marka, int rok) {
this.marka = marka;
this.rok = rok;
}
public void wyswietlInfo() {
System.out.println("Marka: " + marka + ", Rok: " + rok);
}
}
Użycie:
Samochod mojSamochod = new Samochod("Toyota", 2020);
mojSamochod.wyswietlInfo();
Konstruktor domyślny (Default Constructor)
Jeśli nie zdefiniujesz żadnego konstruktora w swojej klasie, kompilator Java dostarczy konstruktor domyślny, który nie robi nic poza inicjalizacją obiektu. Jeśli jednak zdefiniujesz własny konstruktor, domyślny konstruktor nie zostanie utworzony.
Przykład:
public class Samochod {
private String marka;
private int rok;
// Konstruktor domyślny
public Samochod() {
this.marka = "brak" ;
this.rok = "brak";
}
// Konstruktor z parametrami
public Samochod(String marka, int rok) {
this.marka = marka;
this.rok = rok;
}
public void wyswietlInfo() {
System.out.println("Marka: " + marka + ", Rok: " + rok);
}
}
Konstruktor Kopiujący
Konstruktor kopiujący w Javie to konstruktor, który tworzy nowy obiekt jako kopię istniejącego obiektu. Java nie tworzy automatycznie konstruktora kopiującego, musisz go samodzielnie zdefiniować, jeśli jest potrzebny.
Przykład konstruktora kopiującego:
public class Samochod {
private String marka;
private int rok;
// Konstruktor
public Samochod(String marka, int rok) {
this.marka = marka;
this.rok = rok;
}
// Konstruktor kopiujący
public Samochod(Samochod innySamochod) {
this.marka = innySamochod.marka;
this.rok = innySamochod.rok;
}
public void wyswietlInfo() {
System.out.println("Marka: " + marka + ", Rok: " + rok);
}
}
Użycie konstruktora kopiującego:
Samochod samochod1 = new Samochod("Toyota", 2020);
Samochod samochod2 = new Samochod(samochod1); // Utworzenie kopii samochod1
samochod2.wyswietlInfo();
Zastosowanie Konstruktorów
Konstruktory są kluczowym elementem programowania obiektowego w Javie. Pozwalają na:
- Precyzyjne kontrolowanie sposobu inicjalizacji obiektów.
- Umożliwiają przeciążanie, co pozwala na tworzenie obiektów w różnych stanach.
- Zapewnienie, że obiekt zawsze osiągnie stan, w którym jest gotowy do użycia.