Aby zadeklarować pole klasy, do którego dostęp mają jedynie metody tej klasy, a które nie jest dostępne dla klas pochodnych, należy użyć kwalifikatora dostępu
Źle. „Publikowany” to nie jest modyfikator dostępu znany z popularnych języków obiektowych.
Dobrze. Modyfikator
private udostępnia pole wyłącznie metodom tej samej klasy - nawet klasy pochodne go nie widzą.Źle. Modyfikator
protected udostępnia pole także klasom pochodnym, a pytanie wymaga, by były one wykluczone.Źle. Modyfikator
public daje dostęp do pola z dowolnego miejsca w programie, więc nie jest ono w żaden sposób ukryte.Pole, które ma być widoczne tylko dla metod własnej klasy i niedostępne dla klas pochodnych, deklarujemy z modyfikatorem
private. To najsilniejsze ograniczenie dostępu: pole prywatne istnieje w obiekcie, ale odwołać się do niego może wyłącznie kod tej samej klasy. Realizuje to zasadę hermetyzacji (enkapsulacji) - ukrywamy wewnętrzny stan obiektu i wystawiamy go na zewnątrz przez kontrolowane metody (gettery i settery). Dzięki temu nikt z zewnątrz, ani nawet klasa dziedzicząca, nie zmieni pola w sposób łamiący jego poprawność. Przykładowo pole z saldem konta zadeklarowane jako prywatne można modyfikować jedynie przez metody klasy, które pilnują reguł biznesowych.Kluczem jest tu sformułowanie „dostęp mają jedynie metody tej klasy” oraz wykluczenie klas pochodnych. Modyfikator
public robi dokładnie odwrotność - otwiera pole na cały program, więc odwoła się do niego każdy kod, łącznie z obcymi klasami; o żadnym ukryciu danych nie ma mowy. Kuszący bywa protected, bo faktycznie ogranicza dostęp, ale o jeden poziom za mało: pole chronione widzą metody tej klasy oraz wszystkich klas dziedziczących, a w pytaniu klasy pochodne mają być właśnie odcięte. „Publikowany” to z kolei pułapka - taki modyfikator dostępu nie występuje w popularnych językach obiektowych (Java, C#, C++, PHP), więc nie ma czego z nim porównywać. Pozostaje private, który zamyka pole w obrębie jednej klasy i jako jedyny spełnia oba warunki: dostęp tylko z metod tej klasy i brak dostępu dla potomków.