logo

Toegang tot modifiers in Java

  1. Modificatie voor privétoegang
  2. Rol van particuliere bouwer
  3. Standaard toegangsmodificator
  4. Beschermde toegangsmodificator
  5. Modificatie voor openbare toegang
  6. Toegangsmodifier met methodeoverschrijving

Er zijn twee soorten modifiers in Java: toegangsmodificatoren En niet-toegangsmodificatoren .

De toegangsmodifiers in Java specificeren de toegankelijkheid of reikwijdte van een veld, methode, constructor of klasse. We kunnen het toegangsniveau van velden, constructors, methoden en klassen wijzigen door er de toegangsmodifier op toe te passen.

Er zijn vier typen Java-toegangsmodificatoren:

    Privaat: Het toegangsniveau van een privémodifier is alleen binnen de klasse. Het is niet toegankelijk van buiten de klas.Standaard: Het toegangsniveau van een standaardmodifier bevindt zich alleen binnen het pakket. Het is niet toegankelijk van buiten het pakket. Als u geen toegangsniveau opgeeft, is dit het standaardniveau.Beschermd: Het toegangsniveau van een beschermde modifier bevindt zich binnen het pakket en buiten het pakket via de onderliggende klasse. Als u de onderliggende klasse niet maakt, is deze niet toegankelijk buiten het pakket.Openbaar: Het toegangsniveau van een openbare modifier is overal. Het is toegankelijk vanuit de klasse, buiten de klasse, binnen het pakket en buiten het pakket.

Er zijn veel niet-toegangsmodificatoren, zoals statisch, abstract, gesynchroniseerd, native, vluchtig, voorbijgaand, enz. Hier gaan we alleen de toegangsmodificatoren leren.


Java-toegangsmodificatoren begrijpen

Laten we de toegangsmodificatoren in Java begrijpen aan de hand van een eenvoudige tabel.

Toegangsmodificatorbinnen de klasbinnen pakketbuitenpakket alleen per subklassebuiten pakket
Privaat ENNNN
Standaard ENENNN
Beschermd ENENENN
Openbaar ENENENEN

1) Privé

De privétoegangsmodifier is alleen toegankelijk binnen de klasse.

Linux hernoemt map

Eenvoudig voorbeeld van een modifier voor privétoegang

In dit voorbeeld hebben we twee klassen A en Simple gemaakt. Een klasse bevat een privégegevenslid en een privémethode. We benaderen deze privéleden van buiten de klas, dus er is een compileerfout.

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

Rol van particuliere constructeur

Als u een klassenconstructor privé maakt, kunt u de instantie van die klasse niet van buiten de klasse maken. Bijvoorbeeld:

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

Opmerking: Een klasse kan niet privé of beschermd zijn, behalve een geneste klasse.


2) Standaard

Als u geen modifier gebruikt, wordt deze behandeld als standaard standaard. De standaardmodifier is alleen toegankelijk binnen het pakket. Het is niet toegankelijk van buiten het pakket. Het biedt meer toegankelijkheid dan privé. Maar het is meer restrictief dan beschermd en openbaar.

verwijder laatste commit git

Voorbeeld van een standaardtoegangsmodificator

In dit voorbeeld hebben we twee pakketten, pack en mypack, gemaakt. We hebben toegang tot klasse A van buiten het pakket, omdat klasse A niet openbaar is en dus niet toegankelijk is van buiten het pakket.

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

In het bovenstaande voorbeeld is het bereik van klasse A en de bijbehorende methode msg() standaard, zodat deze niet van buiten het pakket toegankelijk is.


3) Beschermd

De beschermde toegangsmodificator is toegankelijk binnen het pakket en buiten het pakket, maar alleen via overerving.

De beschermde toegangsmodificator kan worden toegepast op het gegevenslid, de methode en de constructor. Het kan niet worden toegepast op de klas.

rhel versus centos

Het biedt meer toegankelijkheid dan de standaard modifer.

Voorbeeld van een beveiligde toegangsmodificator

In dit voorbeeld hebben we de twee pakketten pack en mypack gemaakt. De A-klasse van het pakketpakket is openbaar en kan dus van buiten het pakket worden benaderd. Maar de msg-methode van dit pakket is gedeclareerd als beschermd, dus het kan alleen via overerving van buiten de klasse worden benaderd.

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

De modificator voor openbare toegang is overal toegankelijk. Het heeft de grootste reikwijdte van alle andere modifiers.

Voorbeeld van een modifier voor openbare toegang

 //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-toegangsmodificatoren met methode-overschrijving

Als u een methode overschrijft, mag de overschreven methode (dat wil zeggen gedeclareerd in een subklasse) niet restrictiever zijn.

 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(); } } 

De standaardmodifier is restrictiever dan beschermd. Daarom is er sprake van een compileerfout.