logo

Tilgang Modifikatorer i Java

  1. Modifikator for privat tilgang
  2. Rolle som privat konstruktør
  3. Standard tilgangsmodifikator
  4. Beskyttet tilgangsmodifikator
  5. Modifikator for offentlig tilgang
  6. 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:

    Privat: Tilgangsnivået til en privat modifikator er bare innenfor klassen. Den kan ikke nås fra utenfor klassen.Misligholde: Tilgangsnivået til en standardmodifikator er bare innenfor pakken. Den kan ikke nås utenfra pakken. Hvis du ikke angir noe tilgangsnivå, vil det være standard.Beskyttet: Tilgangsnivået til en beskyttet modifikator er innenfor pakken og utenfor pakken gjennom barneklassen. Hvis du ikke gjør barnetimen, kan den ikke nås utenfra pakken.Offentlig: Tilgangsnivået til en offentlig modifikator er overalt. Den kan nås fra klassen, utenfor klassen, innenfor pakken og utenfor pakken.

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.

Tilgangsmodifikatorinnenfor klasseni pakkenutenfor pakke kun etter underklasseutvendig pakke
Privat OGNNN
Misligholde OGOGNN
Beskyttet OGOGOGN
Offentlig OGOGOGOG

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.