– 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;
}
...
}
|
– 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.
GO TO FULL VERSION