logo

Åtkomstmodifierare i Java

  1. Modifierare för privat åtkomst
  2. Roll som privat konstruktör
  3. Standard åtkomstmodifierare
  4. Skyddad åtkomstmodifierare
  5. Modifierare för offentlig åtkomst
  6. Åtkomstmodifierare med metodöverstyrning

Det finns två typer av modifierare i Java: åtkomstmodifierare och icke-åtkomstmodifierare .

Åtkomstmodifierarna i Java anger tillgängligheten eller omfattningen av ett fält, metod, konstruktor eller klass. Vi kan ändra åtkomstnivån för fält, konstruktorer, metoder och klass genom att använda åtkomstmodifieraren på den.

Det finns fyra typer av Java-åtkomstmodifierare:

    Privat: Åtkomstnivån för en privat modifierare är endast inom klassen. Den kan inte nås utanför klassen.Standard: Åtkomstnivån för en standardmodifierare finns endast inom paketet. Den kan inte nås utanför paketet. Om du inte anger någon åtkomstnivå kommer den att vara standard.Skyddad: Åtkomstnivån för en skyddad modifierare är inom paketet och utanför paketet genom barnklass. Om du inte gör barnklassen kan den inte nås utanför paketet.offentlig: Åtkomstnivån för en offentlig modifierare finns överallt. Den kan nås från klassen, utanför klassen, inom paketet och utanför paketet.

Det finns många icke-åtkomstmodifierare, såsom statiska, abstrakta, synkroniserade, native, volatile, transienta, etc. Här ska vi bara lära oss åtkomstmodifierarna.


Förstå Java Access Modifiers

Låt oss förstå åtkomstmodifierarna i Java genom en enkel tabell.

Åtkomstmodifierareinom klasseni paketetutanför paket endast efter underklassutanför paketet
Privat OCHNNN
Standard OCHOCHNN
Skyddad OCHOCHOCHN
offentlig OCHOCHOCHOCH

1) Privat

Modifieraren för privat åtkomst är endast tillgänglig inom klassen.

hur många miljoner är det i en miljard

Enkelt exempel på modifierare för privat åtkomst

I det här exemplet har vi skapat två klasser A och Simple. En klass innehåller privat datamedlem och privat metod. Vi kommer åt dessa privata medlemmar utanför klassen, så det finns ett kompileringsfel.

 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 } } 

Rollen som privat konstruktör

Om du gör någon klasskonstruktor privat kan du inte skapa instansen av den klassen utanför klassen. Till exempel:

 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 } } 

Obs! En klass kan inte vara privat eller skyddad förutom kapslad klass.


2) Standard

Om du inte använder någon modifierare behandlas den som standard som standard. Standardmodifieraren är endast tillgänglig inom paketet. Den kan inte nås utanför paketet. Det ger mer tillgänglighet än privat. Men det är mer restriktivt än skyddat och offentligt.

javascript-variabel global

Exempel på standardåtkomstmodifierare

I det här exemplet har vi skapat två paket pack och mypack. Vi får åtkomst till A-klassen utanför dess paket, eftersom A-klassen inte är offentlig, så den kan inte nås utanför paketet.

 //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 exemplet ovan är omfattningen av klass A och dess metod msg() standard så att den inte kan nås utanför paketet.


3) Skyddad

De modifierare för skyddad åtkomst är tillgänglig inom paketet och utanför paketet men endast genom arv.

Den skyddade åtkomstmodifieraren kan appliceras på datamedlemmen, metoden och konstruktorn. Det kan inte tillämpas på klassen.

Det ger mer tillgänglighet än standardmodifieraren.

Exempel på modifierare av skyddad åtkomst

I det här exemplet har vi skapat de två paketen pack och mypack. Paketets A-klass är offentligt, så det kan nås utanför paketet. Men msg-metoden för det här paketet deklareras som skyddad, så den kan endast nås utanför klassen genom arv.

 //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) Offentligt

De modifierare för allmänhetens tillgång är tillgänglig överallt. Den har den bredaste räckvidden bland alla andra modifierare.

char tostring java

Exempel på public access modifier

 //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-åtkomstmodifierare med metodöverstyrning

Om du åsidosätter någon metod, får den åsidosatta metoden (dvs. deklarerad i underklass) inte vara 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(); } } 

Standardmodifieraren är mer restriktiv än skyddad. Det är därför det finns ett kompileringsfel.