Видимост. Спецификатори за достъп
Възможно е да се контролира кои части от програмата имат достъп до членовете на класа. Контролът на достъпа помага за предотвратяване на злоупотреби. Не винаги е желателно да имате достъп до една променлива или метод на клас, който трябва да работи само в рамките на самия клас.
- частен (затворен)
- публичен (отворен)
- защитен (защитен)
- достъп по подразбиране, когато няма модификатор
Както можете да видите, модификаторът е приложим към променлива, метод, клас.
Да предположим, че класът е деклариран катоpublicи има два метода. Единият ечастен, другият епубличен. Ще имате достъп до класа и методаsecond, но не и първия, въпреки че самият клас е публичен.
Ключовата думаprivateозначава, че достъп до член на клас не се дава на никого, освен на методите на този клас. Други класове в същия пакет също нямат достъп до частни членове.
Всички помощници на класове трябва да бъдат декларирани катоprivate, за да се предотврати случайното им извикване в пакета. Същото важи и за частни полета в клас.
Ключовата думаprotectedе свързана с концепцията за наследяване, при която нови членове се добавят към вече съществуващ клас (база), докато оригиналната реализация остава непроменена. Можете също да промените поведението на съществуващите членове на класа. Ключовата думаextendsсе използва за създаване на нов клас въз основа на съществуващ.
Когато нов пакет е създаден с помощта на наследяване от клас в друг пакет, новият клас има достъп само до публичните членове в оригиналния пакет. Понякога създателят на базов клас трябва да даде достъп до конкретен метод на производни.класове, но го затворете от всички останали. В тези случаи се използва ключовата думаprotected. Спецификаторътprotectedсъщо предоставя достъп в рамките на пакета, т.е. членовете с този спецификатор са достъпни за други класове в същия пакет.
По подразбиране, ако не е приложен модификатор, членът на класа се счита за публичен в рамките на собствения си пакет, но не е достъпен за кодиране извън този пакет. Ако всички класове на вашия проект са в един и същи пакет, тогава немодифицираната променлива е по същество публична (публична).
Помислете за фиктивен класSillySensor
Класът е деклариран катопубличени е наличен в други класове. Класът има променливаsensorData, която е достъпна само в неговия клас (private). Конструкторът е наличен в други класове (публичен). Методътcalibrate()работи само вътре в клас (private). МетодътseedCalibration()е наличен в своя клас или в подклас (protected). МетодътgetSensorData()е наличен в други класове (public).