Strona główna › Pytania INF.04 › Pytanie 189
INF.04 · pytanie #189
Z podanej definicji pola licznik można wywnioskować, iż <pre class="code-block">class MojaKlasa { private static int licznik; ...</pre>
- Apole nie może być zmieniane w kodzie klasy
- Bbieżąca wartość pola jest wspólna dla wszystkich instancji klasy
- Cbieżąca wartość pola jest wspólna dla wszystkich instancji klasy i nie może być zmieniana
- Dpole jest związane z określoną instancją klasy i jego wartość jest unikalna tylko dla tej instancji
Poprawna odpowiedź: B. bieżąca wartość pola jest wspólna dla wszystkich instancji klasy
Kliknij odpowiedź, którą uważasz za poprawną.
Wyjaśnienie
Prawidłowa odpowiedź wynika bezpośrednio z zastosowania słów kluczowych static oraz private w definicji pola licznik. W praktyce oznacza to, że zmienna licznik nie należy do konkretnej instancji klasy, ale do samej klasy jako całości. Innymi słowy – ilekroć tworzysz nowy obiekt typu MojaKlasa, to nie powstaje nowy licznik, tylko wszystkie te obiekty korzystają ze wspólnej „puli”. To zachowanie jest kluczowe na przykład wtedy, gdy chcemy zliczać, ile obiektów danej klasy zostało utworzonych – licznik rośnie globalnie, niezależnie od tego, ile razy utworzymy nową instancję. Często stosuje się takie pola w implementacjach wzorców projektowych typu singleton czy manager zasobów. Static wprowadza też pewną odpowiedzialność – trzeba pamiętać, że modyfikując licznik w jednym miejscu, od razu wypływa to na wszystkie potencjalne obiekty. Z mojego punktu widzenia, to świetny przykład na zrozumienie różnicy między polem statycznym (klasowym), a polem instancyjnym (prywatnym dla każdego obiektu osobno). Pole licznik jest także prywatne, więc bezpośredni dostęp do niego mają tylko metody tej klasy. Zwracam uwagę, że w wielu branżowych projektach takie podejście to wręcz standard, no i bardzo przydaje się, jeśli chcemy wdrożyć licznik globalnie dostępny lub przechowywać konfiguracje wspólne dla wszystkich instancji.
🤖 Wyjaśnienie generowane przez AI – weryfikuj w oficjalnych źródłach.