Java oferă o serie de modificatori de acces să setați nivelurile de acces pentru clase, variabile, metode, și constructori. Cele patru niveluri de acces sunt –
- vizibile pentru pachet, implicit. Nu sunt necesare modificatori.
- vizibil doar pentru clasă (privat).
- vizibil pentru lume (public).
- vizibil pentru pachet și toate subclasele (protejate).,
modificator de acces implicit – niciun cuvânt cheie
modificator de acces implicit înseamnă că nu declarăm în mod explicit un modificator de acces pentru o clasă, câmp, metodă etc.
o variabilă sau o metodă declarată fără modificator de control al accesului este disponibilă pentru orice altă clasă din același pachet. Câmpurile dintr-o interfață sunt implicit publice statice finale, iar metodele dintr-o interfață sunt implicit publice.,
Exemplu
Variabile și metode poate fi declarată fără nici modificatori, ca în următoarele exemple,
String version = "1.5.1";boolean processOrder() { return true;}
Modificator de Acces Privat – Privat
Metode, variabile, și constructori, care sunt declarate private pot fi accesate numai în clasa declarată în sine.modificatorul de acces privat este cel mai restrictiv nivel de acces. Clasa și interfețele nu pot fi private.
variabilele care sunt declarate private pot fi accesate în afara clasei, dacă metodele publice getter sunt prezente în clasă.,
utilizarea modificatorului privat este principala modalitate prin care un obiect se încapsulează și ascunde datele din lumea exterioară.
exemplu
urmatoarea clasa foloseste private access control –
aici, variabila de format a clasei Logger este privata, deci nu exista nicio modalitate pentru alte clase de a prelua sau seta valoarea direct.deci ,pentru a pune această variabilă la dispoziția lumii exterioare, am definit două metode publice: getFormat (), care returnează valoarea formatului și setFormat (String), care își stabilește valoarea.,
modificator de acces Public-Public
o clasă, metodă, constructor, interfață etc. publicul declarat poate fi accesat din orice altă clasă. Prin urmare, câmpurile, metodele, blocurile declarate în interiorul unei clase publice pot fi accesate din orice clasă aparținând Universului Java.
cu toate acestea, dacă clasa publică pe care încercăm să o accesăm este într-un pachet diferit, atunci clasa publică trebuie încă importată. Din cauza moștenirii clasei, toate metodele publice și variabilele unei clase sunt moștenite de subclasele sale.,
exemplu
următoarea funcție utilizează controlul accesului public –
public static void main(String arguments) { // ...}
metoda principală() a unei aplicații trebuie să fie publică. În caz contrar, nu ar putea fi apelat de un interpret Java (cum ar fi java) pentru a rula clasa.variabilele, metodele și constructorii care sunt declarate protejate într-o superclasă pot fi accesate numai de subclasele din alt pachet sau din orice clasă din pachetul clasei membrilor protejați.
modificatorul de acces protejat nu poate fi aplicat clasei și interfețelor., Metode, câmpurile pot fi declarate protejate, însă metodele și câmpurile dintr-o interfață nu pot fi declarate protejate.accesul protejat oferă subclasei șansa de a utiliza metoda helper sau variabila, împiedicând în același timp o clasă nonrelaționată să încerce să o folosească.
Exemplu
următoarele clasa părinte folosește protejate de control acces, pentru a permite copilului de clasa suprascrie openSpeaker() metoda −
class AudioPlayer { protected boolean openSpeaker(Speaker sp) { // implementation details }}class StreamingAudioPlayer extends AudioPlayer { boolean openSpeaker(Speaker sp) { // implementation details }}
Aici, dacă vom defini openSpeaker() metodă de drept privat, atunci nu ar fi accesibil din orice alta clasa, alta decât AudioPlayer., Dacă îl definim ca public, atunci ar deveni accesibil întregii lumi exterioare. Dar intenția noastră este de a expune această metodă numai la subclasa sa, de aceea am folosit modificator protejat.
controlul accesului și moștenirea
următoarele reguli pentru metodele moștenite sunt aplicate −
-
metodele declarate publice într-o superclasă trebuie, de asemenea, să fie publice în toate subclasele.metodele declarate protejate într-o superclasă trebuie fie protejate, fie publice în subclase; ele nu pot fi private.,metodele declarate private nu sunt moștenite deloc, deci nu există nicio regulă pentru ele.