access modifiers java tutorial with examples
Acest tutorial video explică ce sunt modificatorii de acces în Java și cum se utilizează modificatorii de acces implicit, public, protejat și privat cu ajutorul unor exemple:
În Java, avem clase și obiecte. Aceste clase și obiecte sunt conținute într-un pachet. În plus, clasele pot avea clase imbricate, metode, variabile etc. Deoarece Java este un limbaj de programare orientat pe obiecte, trebuie să urmăm încapsularea în care ascundem detaliile nedorite.
Java oferă entități numite „Modificatori de acces sau specificatori de acces” care ne ajută să restricționăm sfera sau vizibilitatea unui pachet, clasă, constructor, metode, variabile sau alți membri ai datelor. Acești modificatori de acces sunt, de asemenea, numiți „Specificații de vizibilitate”.
Prin utilizarea specificatorilor de acces, o anumită metodă sau variabilă de clasă poate fi restricționată la acces sau ascunsă de celelalte clase.
=> Verificați TOATE Tutorialele Java aici.
java trece matricea la metodă după valoare
Ce veți învăța:
- Tutorial video despre modificatorii de acces în Java
- Modificatori de acces în Java
- Tipuri de modificatori de acces în Java
- Concluzie
Tutorial video despre modificatorii de acces în Java
Modificatori de acces în Java
Specificatorii de acces determină, de asemenea, ce membri de date (metode sau câmpuri) dintr-o clasă pot fi accesate de alți membri de date din clase sau pachete etc. Pentru a asigura încapsularea și reutilizarea, acești specificatori / modificatori de acces sunt o parte integrantă a programării orientate obiect.
Modificatorii din Java sunt de două tipuri:
# 1) Modificatori de acces
Modificatorii de acces în Java ne permit să setăm domeniul de aplicare sau accesibilitatea sau vizibilitatea unui membru de date, fie că este un câmp, un constructor, o clasă sau o metodă.
# 2) Modificatori fără acces
Java oferă, de asemenea, specificatori de non-acces care sunt utilizați cu clase, variabile, metode, constructori etc. Specificatorii / modificatorii de non-acces definesc comportamentul entităților la JVM.
Unii dintre specificatorii / modificatorii fără acces din Java sunt:
- static
- final
- abstract
- tranzitoriu
- volatil
- sincronizat
- nativ
Am acoperit cuvinte cheie statice, sincronizate și volatile în tutorialele noastre anterioare. Vom acoperi ceilalți modificatori fără acces în viitoarele noastre tutoriale, deoarece acestea depășesc sfera acestui tutorial.
Tipuri de modificatori de acces în Java
Java oferă patru tipuri de specificatori de acces pe care îi putem folosi cu clase și alte entități.
Acestea sunt:
# 1) Implicit: Ori de câte ori nu este specificat un anumit nivel de acces, atunci se presupune că este „implicit”. Domeniul de aplicare al nivelului implicit se află în pachet.
# 2) Public: Acesta este cel mai comun nivel de acces și ori de câte ori specificatorul de acces public este utilizat cu o entitate, acea entitate particulară este accesibilă în interiorul sau în afara clasei, în interiorul sau în afara pachetului etc.
# 3) Protejat: Nivelul de acces protejat are un domeniu de aplicare care se află în pachet. O entitate protejată este accesibilă și în afara pachetului prin clasa moștenită sau clasa copil.
# 4) Privat: Când o entitate este privată, atunci această entitate nu poate fi accesată în afara clasei. O entitate privată poate fi accesibilă numai din cadrul clasei.
Putem rezuma modificatorii de acces în tabelul următor.
Specificator de acces | În interiorul clasei | Pachet interior | Subclasa pachetului exterior | Pachet exterior |
---|---|---|---|---|
Privat | da | Nu | Nu | Nu |
Mod implicit | da | da | Nu | Nu |
Protejat | da | da | da | Nu |
Public | da | da | da | da |
În continuare, vom discuta în detaliu fiecare dintre acești specificatori de acces.
Specificații de acces implicite
Un modificator de acces implicit în Java nu are un cuvânt cheie specific. Ori de câte ori modificatorul de acces nu este specificat, atunci se presupune că este implicit. Entitățile precum clasele, metodele și variabilele pot avea un acces implicit.
O clasă implicită este accesibilă în interiorul pachetului, dar nu este accesibilă din afara pachetului, adică toate clasele din interiorul pachetului în care este definită clasa implicită pot accesa această clasă.
În mod similar, o metodă sau o variabilă implicită este accesibilă și în interiorul pachetului în care sunt definite și nu în afara pachetului.
Programul de mai jos demonstrează modificatorul de acces implicit în Java.
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args()) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
Ieșire:
În programul de mai sus, avem o clasă și o metodă în interiorul său, fără niciun modificator de acces. Prin urmare, atât afișarea clasei, cât și metoda au acces implicit. Apoi vedem că în metodă putem crea în mod direct un obiect al clasei și putem apela metoda.
Modificator de acces public
O clasă sau o metodă sau un câmp de date specificat ca „public” este accesibil din orice clasă sau pachet din programul Java. Entitatea publică este accesibilă atât în pachet, cât și în afara pachetului. În general, modificatorul de acces public este un modificator care nu restricționează deloc entitatea.
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
Ieșire:
Specificator acces protejat
Specificatorul de acces protejat permite accesul la entități prin subclasele clasei în care este declarată entitatea. Nu contează dacă clasa se află în același pachet sau pachet diferit, dar atâta timp cât clasa care încearcă să acceseze o entitate protejată este o subclasă a acestei clase, entitatea este accesibilă.
Rețineți că o clasă și o interfață nu pot fi protejate, adică nu putem aplica modificatori protejați claselor și interfețelor.
Modificatorul de acces protejat este de obicei utilizat în relațiile părinte-copil.
Programul de mai jos demonstrează utilizarea modificatorului de acces protejat în Java.
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args()) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
Ieșire:
Modificator de acces privat
Modificatorul de acces „privat” este cel care are cel mai scăzut nivel de accesibilitate. Metodele și câmpurile care sunt declarate private nu sunt accesibile în afara clasei. Acestea sunt accesibile numai în cadrul clasei care are ca entități private aceste entități.
Rețineți că entitățile private nici măcar nu sunt vizibile pentru subclasele clasei. Un modificator de acces privat asigură încapsularea în Java.
Câteva puncte de remarcat cu privire la modificatorul de acces privat.
- Modificatorul de acces privat nu poate fi utilizat pentru clase și interfețe.
- Domeniul de aplicare al entităților private (metode și variabile) este limitat la clasa în care sunt declarate.
- O clasă cu un constructor privat nu poate crea un obiect al clasei din orice alt loc ca metoda principală. (Mai multe detalii despre constructorii privați au fost explicate în tutorialul nostru anterior).
Programul Java de mai jos folosește un modificator de acces privat.
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args()){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
Ieșire:
Programul de mai sus oferă erori de compilare deoarece încercăm să accesăm membrii de date private folosind obiectul clasei.
flotare aleatorie c ++ între 0 și 1
Dar există o metodă de accesare a variabilelor membre private. Această metodă utilizează getters și setere în Java. Deci, oferim o metodă public get în aceeași clasă în care este declarată variabila privată, astfel încât getter să poată citi valoarea variabilei private.
În mod similar, oferim o metodă de setare publică care ne permite să setăm o valoare pentru variabila privată.
Următorul program Java demonstrează utilizarea metodelor getter și setter pentru variabilele private în Java.
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String() main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
Ieșire:
Programul de mai sus are o clasă cu o variabilă de șir privat. Oferim o metodă publică de membru getName care returnează valoarea variabilei private. De asemenea, oferim o metodă publică setName în clasă care ia un șir ca argument și îl atribuie variabilei private.
Deoarece ambele metode sunt publice, le putem accesa cu ușurință folosind obiectul clasei. În acest fel putem depăși eroarea de compilare care apare de fiecare dată când încercăm să accesăm datele private ale clasei.
întrebări frecvente
Q # 1) Câți modificatori de acces există în Java?
Răspuns: Java oferă patru modificatori, adică implicit, public, protejat și privat.
Q # 2) Ce sunt modificatorii de acces și modificatorii fără acces în Java?
Răspuns: Modificatorii de acces definesc vizibilitatea sau scopul unei entități de program, cum ar fi o clasă sau o metodă sau o variabilă sau un constructor. Modificatorii fără acces definesc comportamentul unei entități. De exemplu, o metodă sau un bloc sincronizat indică faptul că poate funcționa într-un mediu multithreading, o variabilă finală indică faptul că este o constantă.
Î. 3) De ce sunt importante specificațiile de acces?
Răspuns: Modificatorii specifică ce clasă poate accesa ce alte clase sau metode sau variabile. Folosind specificatori de acces putem limita accesul la diferite clase, metode, constructori și variabile și, de asemenea, putem asigura încapsularea și reutilizarea entităților Java.
Q # 4) Care modificatori nu sunt utilizați pentru clasă?
Răspuns: Modificatorii protejați și cei privați nu sunt folosiți pentru o clasă.
Q # 5) Ce sunt modificatorii fără acces?
Răspuns: Modificatorii care definesc comportamentul entităților precum clasa, metoda sau variabilele cu care sunt asociate sunt modificatori fără acces. După cum sugerează și numele, nu specifică accesul. Java oferă diferiți modificatori fără acces, cum ar fi static, final, sincronizat, volatil, abstract etc.
Mai multe despre modificatorii de vizibilitate
Java oferă numeroși modificatori pentru a accesa variabila, metodele și constructorii.
Există 4 tipuri de variabile de acces în Java:
- Privat
- Public
- Mod implicit
- Protejat
# 1) Privat
Dacă o variabilă este declarată privată, atunci poate fi accesată în cadrul clasei. Această variabilă nu va fi disponibilă în afara clasei. Deci, membrii externi nu pot accesa membrii privați.
Notă: Clasele și interfețele nu pot fi private.
# 2) Public
Metodele / variabilele cu modificatori publici pot fi accesate de toate celelalte clase din proiect.
# 3) Protejat
Dacă o variabilă este declarată protejată, atunci poate fi accesată în aceleași clase de pachete și subclasă a oricăror alte pachete.
Notă: Modificatorul de acces protejat nu poate fi utilizat pentru clasă și interfețe.
# 4) Modificator de acces implicit
cum se deschide fișierul jar executabil
Dacă o variabilă / metodă este definită fără niciun cuvânt cheie modificator de acces, atunci acesta va avea un acces implicit modificator.
Modificatori de acces | Vizibilitate |
---|---|
Public | Vizibil pentru toate clasele. |
Protejat | Vizibil pentru clasele din pachet și subclasele altor pachete. |
Fără modificator de acces (implicit) | Vizibil pentru cursurile cu pachetul |
privat | Vizibil cu în clasă. Nu este accesibil în afara clasei. |
Clasa demonstrativă:
class AccessModifiersDemo { private int empsalaray ; public String empName; private void calculateSalary() { System.out.println('insid methodone'); } public String printEmpName(String empName ) { this.empName=empName; return empName; } }
Accesarea membrilor clasei dintr-o altă clasă:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Ieșire:
Accesarea membrilor publici:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Ieșire:
Bobby
Puncte importante:
- Specificatorii de acces definesc vizibilitatea clasei.
- Dacă nu este menționat niciun cuvânt cheie, acesta este modificatorul de acces implicit.
- Patru modificatori în Java includ public, privat, protejat și implicit.
- Cuvintele cheie private și protejate nu pot fi utilizate pentru clase și interfețe.
Concluzie
În acest tutorial, am explorat în detaliu modificatorii de acces în Java. Java oferă patru tipuri de modificatori de acces sau de specificatori de vizibilitate, adică implicit, public, privat și protejat. Modificatorul implicit nu are niciun cuvânt cheie asociat.
Atunci când o clasă sau metodă sau variabilă nu are un specificator de acces asociat, presupunem că are acces implicit. Modificatorul de acces public permite accesul la orice, fie în interiorul, fie în afara clasei sau pachetului. Nu există o limită a accesului în cazul modificatorului public.
Specificatorul de vizibilitate protejat permite accesul doar la subclasele care moștenesc clasa în care sunt declarați membrii protejați. Modificatorul de acces privat permite accesibilitatea redusă cu membrii datelor private să fie accesibilă numai în cadrul clasei.
Modificatorii limitează domeniul de date al membrilor, cum ar fi clasele, constructorii, metodele și variabilele și definesc limita cu privire la clasele sau pachetele care le pot accesa. Specificatorii de acces încurajează încapsularea și reutilizarea în Java. Rețineți că clasele și interfața nu pot fi protejate sau private.
=> Vizitați aici pentru a afla Java de la zero.
Lectură recomandată
- Tutorial de reflecție Java cu exemple
- Tutorial JAVA pentru începători: peste 100 de cursuri video Java practice
- Introducere în limbajul de programare Java - Video Tutorial
- Tutorial Java SWING: Container, componente și gestionarea evenimentelor
- Java String cu buffer de șiruri și tutorial de generare de șiruri
- Implementarea Java: crearea și executarea fișierului Java JAR
- Mașină virtuală Java: Cum ajută JVM la rularea aplicației Java
- Tutorial Java Collections Framework (JCF)