- Modifierare för privat åtkomst
- Roll som privat konstruktör
- Standard åtkomstmodifierare
- Skyddad åtkomstmodifierare
- Modifierare för offentlig åtkomst
- Å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:
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.
Åtkomstmodifierare | inom klassen | i paketet | utanför paket endast efter underklass | utanför paketet |
---|---|---|---|---|
Privat | OCH | N | N | N |
Standard | OCH | OCH | N | N |
Skyddad | OCH | OCH | OCH | N |
offentlig | OCH | OCH | OCH | OCH |
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.