KWALIFIKACJA INF3 - STYCZEŃ 2019

PYTANIE NR 30.
Który modyfikator wskazuje podany opis?

Metoda oraz zmienna jest dostępna wyłącznie dla innych metod własnej klasy.

A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Opis "dostępna wyłącznie dla innych metod własnej klasy" oznacza, że element (metoda lub zmienna) jest widoczny tylko wewnątrz tej samej klasy. Taką najsilniejszą kontrolę dostępu zapewnia modyfikator private. Pozostałe opcje dopuszczają szerszy dostęp lub dotyczą innej cechy (np. statyczności).

Pełne wyjaśnienie:

Modyfikatory dostępu określają widoczność pól (zmiennych składowych) i metod, czyli to, z jakiego miejsca w kodzie można się do nich odwołać. W praktyce jest to podstawowe narzędzie realizacji hermetyzacji (enkapsulacji): wewnętrzne szczegóły implementacji ukrywa się, a na zewnątrz wystawia tylko bezpieczny, kontrolowany interfejs.

Opis: "Metoda oraz zmienna jest dostępna wyłącznie dla innych metod własnej klasy" wskazuje na sytuację, w której dostęp jest dozwolony tylko z wnętrza tej samej klasy. Taki poziom ograniczenia odpowiada modyfikatorowi private, który służy do ukrywania elementów implementacyjnych przed kodem spoza klasy.

Dlaczego pozostałe odpowiedzi nie pasują?

  • public oznacza najszerszy dostęp — element ma być dostępny z zewnątrz (np. z innych klas), co stoi w sprzeczności ze słowem "wyłącznie".
  • protected zwykle pozwala na dostęp w klasie oraz dodatkowo w klasach dziedziczących (i/lub w obrębie pakietu, zależnie od języka). To nadal jest dostęp szerszy niż "tylko własna klasa".
  • static nie jest modyfikatorem dostępu (widoczności), tylko informuje, że pole/metoda należy do klasy, a nie do instancji. Element statyczny może być jednocześnie public/protected/private, więc "static" nie odpowiada opisowi o wyłączności dostępu.

Wskazówka egzaminacyjna: gdy w treści pojawiają się sformułowania typu "tylko w tej klasie", "niedostępne na zewnątrz", najczęściej chodzi o private. Gdy jest mowa o "z każdej klasy" — o public. Gdy o "dla klas pochodnych" — o protected. A gdy o "wspólne dla wszystkich obiektów" — o static.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
private oznacza, że pole lub metoda są dostępne tylko wewnątrz tej samej klasy. Kod z innych klas nie powinien mieć do nich bezpośredniego dostępu, co wspiera hermetyzację i ogranicza ryzyko niekontrolowanych zmian stanu obiektu.
public udostępnia element "na zewnątrz" (np. dla innych klas), a private ogranicza dostęp do wnętrza klasy. W praktyce elementy public tworzą interfejs klasy, a private służy do ukrycia szczegółów implementacji.
protected zwykle dopuszcza dostęp także dla klas dziedziczących (czasem również w obrębie pakietu/namespace). To szerszy dostęp niż "wyłącznie w jednej klasie", dlatego nie pasuje do opisu pełnej izolacji.
Nie. static dotyczy tego, czy element należy do klasy (wspólny dla wszystkich obiektów), a nie tego, kto ma do niego dostęp. Widoczność ustala się osobno, np. przez private, public lub protected.
Szukaj słów: "tylko w tej klasie", "wyłącznie wewnątrz klasy", "niedostępne z zewnątrz". To typowe opisy najsilniejszego ograniczenia dostępu. Jeśli opis mówi o dostępie z każdej klasy, wtedy bardziej pasuje public.
Gdy chcesz ukryć pola modelu, dane konfiguracyjne, metody walidacji lub metody pomocnicze wykorzystywane tylko wewnątrz klasy. Dzięki temu ograniczasz "powierzchnię" API i zmniejszasz ryzyko, że inny fragment projektu użyje klasy w niepoprawny sposób.
Hermetyzacja polega na ukrywaniu szczegółów implementacji i kontrolowaniu dostępu do stanu obiektu. Ustawienie pól jako private wymusza korzystanie z metod (np. getterów/setterów lub metod biznesowych), co pozwala dodać walidację i utrzymać spójność danych.
Metody private testuje się zwykle pośrednio, przez metody publiczne, które z nich korzystają. To zgodne z ideą testowania zachowania klasy, a nie jej szczegółów. W wyjątkowych przypadkach stosuje się refaktoryzację (wydzielenie klasy) zamiast "otwierania" dostępu.
Częsty błąd to mylenie static z ograniczeniem widoczności albo wybór protected, bo kojarzy się z "ochroną". Inny błąd to ustawianie wszystkiego jako public "dla wygody", co utrudnia utrzymanie i zwiększa ryzyko błędów w większym projekcie.
Nie zawsze. W Java i C# private jest klasycznym modyfikatorem dostępu. W JavaScript prywatne pola często realizuje się składnią z # (tzw. private class fields) lub przez domknięcia. Dlatego w testach warto zwracać uwagę, czy podano konkretny język.
info

To pytanie poprawnie rozwiązuje 71% zdających egzamin. średnio łatwe

Według specjalistów z branży: "Opis "dostępna wyłącznie dla innych metod własnej klasy" oznacza, że element (metoda lub zmienna) jest widoczny tylko wewnątrz tej samej klasy."

Źródła:

  • Oracle, The Java® Language Specification (JLS), Chapter 6: Names, Section 6.6: Access Control - https://docs.oracle.com/javase/specs/jls/se21/html/jls-6.html#jls-6.6 (accessed 2026-02-27)
  • Microsoft Learn, C# reference: Accessibility Levels (public, private, protected, internal) - https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/accessibility-levels (accessed 2026-02-27)
  • MDN Web Docs, JavaScript classes: Private class fields - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields (accessed 2026-02-27)

Materiały:

  • Dokumentacja języka używanego na zajęciach (sekcja o modyfikatorach dostępu)
  • Podręcznik/lekcje OOP: hermetyzacja i projektowanie interfejsu klasy
  • Zadania praktyczne: refaktoryzacja klasy z polami public na private i dodanie metod dostępowych

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego