Konstruktor

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:

  1. Nazwa konstruktora musi być taka sama jak nazwa klasy.
  2. Konstruktor nie ma typu zwrotnego, nawet void.
  3. 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.