- Modificator de acces privat
- Rolul de constructor privat
- Modificator de acces implicit
- Modificator de acces protejat
- Modificator de acces public
- 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:
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 pachet | pachet exterior numai după subclasă | pachet exterior |
---|---|---|---|---|
Privat | ȘI | N | N | N |
Mod implicit | ȘI | ȘI | N | N |
Protejat | ȘI | ȘI | ȘI | N |
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.