logo

Adgang modifikatorer i Java

  1. Modifikator for privat adgang
  2. Rolle som privat konstruktør
  3. Standardadgangsmodifikator
  4. Beskyttet adgangsmodifikator
  5. Modifikator for offentlig adgang
  6. Adgangsmodifikator med metodetilsidesættelse

Der er to typer modifikatorer i Java: adgangsmodifikatorer og ikke-adgangsmodifikatorer .

Adgangsmodifikatorerne i Java angiver tilgængeligheden eller omfanget af et felt, metode, konstruktør eller klasse. Vi kan ændre adgangsniveauet for felter, konstruktører, metoder og klasse ved at anvende adgangsmodifikatoren på den.

Der er fire typer Java-adgangsmodifikatorer:

    Privat: Adgangsniveauet for en privat modifikator er kun inden for klassen. Det kan ikke tilgås uden for klassen.Standard: Adgangsniveauet for en standardmodifikator er kun i pakken. Det kan ikke tilgås uden for pakken. Hvis du ikke angiver noget adgangsniveau, vil det være standard.Beskyttet: Adgangsniveauet for en beskyttet modifikator er inden for pakken og uden for pakken gennem børneklassen. Hvis du ikke laver børneklassen, kan den ikke tilgås uden for pakken.Offentlig: Adgangsniveauet for en offentlig modifikator er overalt. Det kan tilgås inde fra klassen, uden for klassen, i pakken og uden for pakken.

Der er mange ikke-adgangsmodifikatorer, såsom statiske, abstrakte, synkroniserede, native, flygtige, transiente osv. Her skal vi kun lære adgangsmodifikatorerne.


Forstå Java Access Modifiers

Lad os forstå adgangsmodifikatorerne i Java ved hjælp af en simpel tabel.

Adgangsmodifikatorinden for klasseni pakkenuden for pakke kun efter underklasseudvendig pakke
Privat OGNNN
Standard OGOGNN
Beskyttet OGOGOGN
Offentlig OGOGOGOG

1) Privat

Den private adgangsmodifikator er kun tilgængelig inden for klassen.

css centrering af et billede

Simpelt eksempel på privat adgangsmodifikator

I dette eksempel har vi lavet to klasser A og Simple. En klasse indeholder privat datamedlem og privat metode. Vi tilgår disse private medlemmer uden for klassen, så der er en kompileringsfejl.

 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 konstruktør

Hvis du gør en klassekonstruktør privat, kan du ikke oprette forekomsten af ​​den klasse uden for 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 } } 

Bemærk: En klasse kan ikke være privat eller beskyttet undtagen indlejret klasse.


2) Standard

Hvis du ikke bruger nogen modifikator, behandles det som Standard som standard. Standardmodifikatoren er kun tilgængelig i pakken. Det kan ikke tilgås uden for pakken. Det giver mere tilgængelighed end privat. Men det er mere restriktivt end beskyttet og offentligt.

returnerer et array java

Eksempel på standardadgangsmodifikator

I dette eksempel har vi lavet to pakker pack og mypack. Vi tilgår A-klassen uden for dens pakke, da A-klassen ikke er offentlig, så den kan ikke tilgås uden for 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 ovenstående eksempel er omfanget af klasse A og dens metode msg() standard, så det kan ikke tilgås uden for pakken.


3) Beskyttet

Det modifikator for beskyttet adgang er tilgængelig i pakken og uden for pakken, men kun gennem arv.

Den beskyttede adgangsmodifikator kan anvendes på datamedlemmet, metoden og konstruktøren. Det kan ikke anvendes på klassen.

Det giver mere tilgængelighed end standardmodiferen.

Eksempel på modifikator for beskyttet adgang

I dette eksempel har vi lavet de to pakker pack og mypack. A-klasse-pakken er offentlig, så den kan tilgås uden for pakken. Men msg-metoden for denne pakke er erklæret som beskyttet, så den kan kun tilgås uden for klassen gennem arv.

det dejligste smil i verden
 //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

Det modifikator for offentlig adgang er tilgængelig overalt. Det har det bredeste anvendelsesområde blandt alle andre modifikatorer.

Eksempel på offentlig adgangsmodifikator

 //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-adgangsmodifikatorer med metodetilsidesættelse

Hvis du tilsidesætter en metode, må den tilsidesatte metode (dvs. erklæret i underklassen) ikke være mere 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 mere restriktiv end beskyttet. Det er derfor, der er en kompileringsfejl.