- Modificatie voor privétoegang
- Rol van particuliere bouwer
- Standaard toegangsmodificator
- Beschermde toegangsmodificator
- Modificatie voor openbare toegang
- 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:
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.
Toegangsmodificator | binnen de klas | binnen pakket | buitenpakket alleen per subklasse | buiten pakket |
---|---|---|---|---|
Privaat | EN | N | N | N |
Standaard | EN | EN | N | N |
Beschermd | EN | EN | EN | N |
Openbaar | EN | EN | EN | EN |
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.