logo

Modificatori de acces în Java

  1. Modificator de acces privat
  2. Rolul de constructor privat
  3. Modificator de acces implicit
  4. Modificator de acces protejat
  5. Modificator de acces public
  6. Modificator de acces cu modificarea metodei

Există două tipuri de modificatori în Java: modificatori de acces și modificatori non-acces .

Modificatorii de acces din Java specifică accesibilitatea sau domeniul de aplicare a unui câmp, metodă, constructor sau clasă. Putem schimba nivelul de acces al câmpurilor, constructorilor, metodelor și clasei aplicând modificatorul de acces pe acesta.

Există patru tipuri de modificatori de acces Java:

    Privat: Nivelul de acces al unui modificator privat este doar în cadrul clasei. Nu poate fi accesat din afara clasei.Mod implicit: Nivelul de acces al unui modificator implicit este doar în pachet. Nu poate fi accesat din afara pachetului. Dacă nu specificați niciun nivel de acces, acesta va fi implicit.Protejat: Nivelul de acces al unui modificator protejat este în pachet și în afara pachetului prin clasa copil. Daca nu faci clasa de copil, aceasta nu poate fi accesata din afara pachetului.Public: Nivelul de acces al unui modificator public este peste tot. Poate fi accesat din interiorul clasei, din afara clasei, din interiorul pachetului și din afara pachetului.

Există mulți modificatori non-acces, cum ar fi statici, abstracti, sincronizați, nativi, volatili, tranzitori etc. Aici, vom învăța doar modificatorii de acces.


Înțelegerea modificatorilor de acces Java

Să înțelegem modificatorii de acces în Java printr-un tabel simplu.

Modificator de accesîn cadrul claseiîn pachetpachet exterior numai după subclasăpachet exterior
Privat ȘINNN
Mod implicit ȘIȘINN
Protejat ȘIȘIȘIN
Public ȘIȘIȘIȘI

1) Privat

Modificatorul de acces privat este accesibil numai în cadrul clasei.

forma completă a i d e

Exemplu simplu de modificator de acces privat

În acest exemplu, am creat două clase A și Simple. O clasă conține un membru al datelor private și o metodă privată. Accesăm acești membri privați din afara clasei, așa că există o eroare de compilare.

 class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } } 

Rolul de constructor privat

Dacă faceți privat orice constructor de clasă, nu puteți crea instanța acelei clase din afara clasei. De exemplu:

 class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } } 

Notă: O clasă nu poate fi privată sau protejată, cu excepția clasei imbricate.


2) Implicit

Dacă nu utilizați niciun modificator, acesta este tratat ca Mod implicit în mod implicit. Modificatorul implicit este accesibil numai în pachet. Nu poate fi accesat din afara pachetului. Oferă mai multă accesibilitate decât privat. Dar, este mai restrictiv decât protejat și public.

cum se deschide un fișier cu java

Exemplu de modificator de acces implicit

În acest exemplu, am creat două pachete pack și mypack. Accesăm clasa A din afara pachetului său, deoarece clasa A nu este publică, deci nu poate fi accesată din afara pachetului.

 //save by A.java package pack; class A{ void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } } 

În exemplul de mai sus, domeniul de aplicare al clasei A și metoda sa msg() sunt implicite, astfel încât nu pot fi accesate din afara pachetului.


3) Protejat

The modificator de acces protejat este accesibil în interiorul pachetului și în afara pachetului, dar numai prin moștenire.

Modificatorul de acces protejat poate fi aplicat asupra membrului de date, metodei și constructorului. Nu poate fi aplicat la clasă.

Oferă mai multă accesibilitate decât modificatorul implicit.

Exemplu de modificator de acces protejat

În acest exemplu, am creat cele două pachete pack și mypack. Pachetul de clasa A a pachetului este public, deci poate fi accesat din afara pachetului. Dar metoda msg a acestui pachet este declarată ca protejată, deci poate fi accesată din afara clasei doar prin moștenire.

sonu nigam
 //save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } } 
 Output:Hello 

4) Public

The modificator de acces public este accesibil peste tot. Are cel mai larg domeniu de aplicare dintre toți ceilalți modificatori.

Exemplu de modificator de acces public

 //save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } } 
 Output:Hello 

Modificatori de acces Java cu modificarea metodei

Dacă suprascrieți orice metodă, metoda suprascrisă (adică declarată în subclasă) nu trebuie să fie mai restrictivă.

 class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } } 

Modificatorul implicit este mai restrictiv decât protejat. De aceea, există o eroare de compilare.