- Modifikator for privat tilgang
- Rolle som privat konstruktør
- Standard tilgangsmodifikator
- Beskyttet tilgangsmodifikator
- Modifikator for offentlig tilgang
- Tilgangsmodifikator med metodeoverstyring
Det er to typer modifikatorer i Java: tilgangsmodifikatorer og ikke-tilgangsmodifikatorer .
Tilgangsmodifikatorene i Java spesifiserer tilgjengeligheten eller omfanget av et felt, metode, konstruktør eller klasse. Vi kan endre tilgangsnivået til felt, konstruktører, metoder og klasse ved å bruke tilgangsmodifikatoren på den.
Det er fire typer Java-tilgangsmodifikatorer:
Det er mange ikke-tilgangsmodifikatorer, for eksempel statiske, abstrakte, synkroniserte, native, volatile, transiente osv. Her skal vi bare lære tilgangsmodifikatorene.
Forstå Java Access Modifiers
La oss forstå tilgangsmodifikatorene i Java med en enkel tabell.
Tilgangsmodifikator | innenfor klassen | i pakken | utenfor pakke kun etter underklasse | utvendig pakke |
---|---|---|---|---|
Privat | OG | N | N | N |
Misligholde | OG | OG | N | N |
Beskyttet | OG | OG | OG | N |
Offentlig | OG | OG | OG | OG |
1) Privat
Modifikatoren for privat tilgang er bare tilgjengelig innenfor klassen.
manuell testing
Enkelt eksempel på modifikator for privat tilgang
I dette eksemplet har vi laget to klasser A og Simple. En klasse inneholder privat datamedlem og privat metode. Vi får tilgang til disse private medlemmene utenfor klassen, så det er en kompileringsfeil.
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 } }
Rolle som privat entreprenør
Hvis du gjør en klassekonstruktør privat, kan du ikke opprette forekomsten av den klassen utenfor klassen. For eksempel:
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 } }
Merk: En klasse kan ikke være privat eller beskyttet bortsett fra nestet klasse.
2) Standard
Hvis du ikke bruker noen modifikator, behandles det som misligholde som standard. Standardmodifikatoren er bare tilgjengelig i pakken. Den kan ikke nås utenfra pakken. Det gir mer tilgjengelighet enn privat. Men det er mer restriktivt enn beskyttet og offentlig.
anaconda vs python slange
Eksempel på standard tilgangsmodifikator
I dette eksemplet har vi laget to pakker pack og mypack. Vi får tilgang til A-klassen fra utenfor pakken, siden A-klassen ikke er offentlig, så den kan ikke nås fra utenfor pakken.
//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 } }
I eksemplet ovenfor er omfanget av klasse A og dens metode msg() standard, slik at det ikke kan nås fra utenfor pakken.
3) Beskyttet
De modifikator for beskyttet tilgang er tilgjengelig i pakken og utenfor pakken, men kun gjennom arv.
Modifikatoren for beskyttet tilgang kan brukes på datamedlemmet, metoden og konstruktøren. Det kan ikke brukes på klassen.
Det gir mer tilgjengelighet enn standardmodifikatoren.
Eksempel på modifikator for beskyttet tilgang
I dette eksemplet har vi laget de to pakkene pack og mypack. A-klasse-pakken er offentlig, så den kan nås fra utsiden av pakken. Men msg-metoden for denne pakken er erklært som beskyttet, så den kan bare nås fra utenfor klassen gjennom arv.
hva er kataloginnsending
//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) Offentlig
De modifikator for offentlig tilgang er tilgjengelig overalt. Den har det bredeste omfanget blant alle andre modifikatorer.
Eksempel på offentlig tilgangsmodifikator
//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
Java Access Modifiers med metodeoverstyring
Hvis du overstyrer en metode, må ikke overstyrt metode (dvs. deklarert i underklasse) være mer restriktiv.
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(); } }
Standardmodifikatoren er mer restriktiv enn beskyttet. Det er derfor det er en kompileringsfeil.