Instrukcja Fraktale frak1 = new Fraktale(); jest klasycznym przykładem tworzenia obiektu w Javie. Składa się z dwóch części: deklaracji oraz inicjalizacji.
- Fraktale – to typ zmiennej, czyli informacja, jakiego rodzaju obiekt może być przypisany do tej zmiennej.
- frak1 – nazwa zmiennej, która będzie przechowywać odwołanie do obiektu.
- new – operator tworzenia obiektu: powoduje przydzielenie pamięci w obszarze heap i przygotowanie miejsca na pola obiektu.
- Fraktale() – wywołanie konstruktora, który inicjalizuje nowo utworzoną instancję (tu: konstruktor bezparametrowy).
Po wykonaniu instrukcji zmienna frak1 nie przechowuje "samego obiektu", tylko referencję do niego. To ważne rozróżnienie: Java operuje referencjami, a nie wskaźnikami w rozumieniu C/C++ (nie da się wykonywać arytmetyki adresowej ani ręcznie zarządzać pamięcią). Obiekt pozostaje w pamięci tak długo, jak istnieją do niego referencje; później może zostać usunięty automatycznie przez Garbage Collector.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- Stwierdzenie o "wskaźniku" jest mylące: w Javie nie ma wskaźników dostępnych programiście; poprawne pojęcie to referencja.
- Opis, że to "wywołanie funkcji Fraktale" jest błędny: Fraktale() to konstruktor, a operator new odpowiada za utworzenie instancji.
- Teza o inicjalizacji bez przypisania obiektu nie pasuje do tej linijki kodu. Taka sytuacja wystąpiłaby przy samej deklaracji, np.
Fraktale frak1;
(wtedy nie ma obiektu utworzonego przez new).
W praktyce taka instrukcja pojawia się wszędzie tam, gdzie tworzysz nowe elementy modelu danych, obiekty pomocnicze lub instancje klas realizujących logikę aplikacji.