– Najwyższy czas, abym opowiedział Ci o konstruktorach. To naprawdę prosta koncepcja. Programistom udało się wynaleźć szybki sposób tworzenia i inicjalizowania obiektów.

Bez konstruktora Z konstruktorem
MojPlik plik = new MojPlik();
plik.inicjalizuj("c:\data\a.txt");
String tekst = plik.readTekst();
MojPlik plik = new MojPlik("c:\data\a.txt");
String tekst = plik.readTekst();
MojPlik plik = new MojPlik();
plik.inicjalizuj("c:\data\", "a.txt");
String tekst = plik.readTekst();
MojPlik plik = new MojPlik("c:\data\", "a.txt");
String tekst = plik.readTekst();
MojPlik plik = new MojPlik();
plik.inicjalizuj("c:\data\a.txt");

MojPlik plik2 = new MojPlik();
plik2.inicjalizuj(MojPlik plik, "a.txt");
String tekst = plik2.readTekst();
MojPlik plik = new MojPlik("c:\data\a.txt");


MojPlik plik2 = new MojPlik(plik, "a.txt");
String tekst = plik2.readTekst();

– Moja nauka o metodzie inicjalizuj właśnie się zakończyła...

– Przyjrzyj się temu. Przy użyciu konstruktorów kod jest wygodniejszy i bardziej kompaktowy.

– Zgadza się. Mam pytanie. Wiem już, jak napisać metodę inicjalizuj wewnątrz klasy, ale jak mam napisać konstruktor?

– Po pierwsze, spójrz na ten przykład:

Bez konstruktora Z konstruktorem
class MojPlik
{
  private String nazwapliku = null;

  public void inicjalizuj(String nazwa)
  {
    this.nazwapliku = nazwa;
  }

  public void inicjalizuj(String folder, String nazwa)
  {
    this.nazwapliku = folder + nazwa;
  }

  public void inicjalizuj(MojPlik plik, String nazwa)
  {
    this.nazwapliku = plik.getFolder() + nazwa;
  }

...
}
class MojPlik
{
  private String nazwapliku = null;

  public MojPlik(String nazwa)
  {
    this.nazwapliku = nazwa;
  }

  public MojPlik(String folder, String nazwa)
  {
    this.nazwapliku = folder + nazwa;
  }

  public MojPlik(MojPlik plik, String nazwa)
  {
    this.nazwapliku = plik.getFolder() + nazwa;
  }

...
}
2
Zadanie
Składnia Java,  poziom 5lekcja 8
Niedostępne
Wprowadzanie kodu
Nie musisz myśleć, po prostu go wyklep! Brzmi to trochę paradoksalnie, ale czasami Twoje palce „pamiętają” kod lepiej niż Twój świadomy umysł. Właśnie dlatego trening w tajnym centrum CodeGym zawiera zadania wymagające wprowadzania kodu. Wprowadzając kod, przyzwyczajasz się do składni oraz zarabiasz ciemną materię. Co więcej, walczysz z własnym lenistwem!

– Deklaracja konstruktora wewnątrz klasy jest prosta. Konstruktor jest podobny do metody inicjalizuj, są między nimi tylko dwie różnice:

1. Nazwa konstruktora jest taka sama, jak nazwa klasy (zamiast inicjalizuj).

2. Konstruktor nie ma typu (nie wskazuje się żadnego typu).

– OK, to rzeczywiście jak inicjalizuj, z drobnymi różnicami. Myślę, że rozumiem.