- Yksityisen pääsyn muokkaaja
- Yksityisen rakentajan rooli
- Oletusarvoinen käyttöoikeusmuunnin
- Suojatun pääsyn muokkaaja
- Julkisen pääsyn muokkaaja
- Access Modifier menetelmän ohituksella
Javassa on kahdenlaisia muuntajia: pääsyn muokkaajat ja ei-pääsyn muokkaajat .
Java-käyttöoikeudet määrittävät kentän, menetelmän, rakentajan tai luokan saavutettavuuden tai laajuuden. Voimme muuttaa kenttien, rakentajien, menetelmien ja luokan käyttöoikeustasoa käyttämällä siihen pääsyn muokkaajaa.
Java-käyttöoikeuksia on neljää tyyppiä:
On olemassa monia ei-pääsyn muokkaajia, kuten staattinen, abstrakti, synkronoitu, natiivi, haihtuva, ohimenevä jne. Tässä aiomme oppia vain pääsyn muokkaajat.
Java Accessin muokkaajien ymmärtäminen
Ymmärretään Java-käyttöoikeudet yksinkertaisella taulukolla.
Access Modifier | luokan sisällä | paketin sisällä | vain ulkopakkaus alaluokittain | ulkopuolinen paketti |
---|---|---|---|---|
Yksityinen | JA | N | N | N |
Oletus | JA | JA | N | N |
Suojattu | JA | JA | JA | N |
Julkinen | JA | JA | JA | JA |
1) Yksityinen
Yksityisen pääsyn muokkaaja on käytettävissä vain luokassa.
lausunnon kattavuus
Yksinkertainen esimerkki yksityisen pääsyn muokkaajasta
Tässä esimerkissä olemme luoneet kaksi luokkaa A ja Simple. Luokka sisältää yksityisen datajäsenen ja yksityisen menetelmän. Käytämme näitä yksityisiä jäseniä luokan ulkopuolelta, joten käännösaikavirhe.
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 } }
Yksityisen rakentajan rooli
Jos teet minkä tahansa luokan rakentajan yksityiseksi, et voi luoda kyseisen luokan esiintymää luokan ulkopuolelta. Esimerkiksi:
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 } }
Huomautus: Luokka ei voi olla yksityinen tai suojattu paitsi sisäkkäinen luokka.
2) Oletus
Jos et käytä mitään muuntajaa, sitä käsitellään oletuksena oletuksena. Oletusmuuttaja on käytettävissä vain paketin sisällä. Siihen ei pääse käsiksi paketin ulkopuolelta. Se tarjoaa enemmän saavutettavuutta kuin yksityinen. Mutta se on enemmän rajoittava kuin suojattu ja julkinen.
kuinka muuntaa merkkijono java kokonaisluvuksi
Esimerkki oletusarvoisesta pääsyn muokkaajasta
Tässä esimerkissä olemme luoneet kaksi pakettia pack ja mypack. Käytämme A-luokkaa sen paketin ulkopuolelta, koska luokka A ei ole julkinen, joten siihen ei pääse käsiksi paketin ulkopuolelta.
//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 } }
Yllä olevassa esimerkissä luokan A ja sen menetelmän msg() laajuus on oletusarvoinen, joten sitä ei voida käyttää paketin ulkopuolelta.
3) Suojattu
The suojatun pääsyn muokkaaja on saatavilla pakkauksen sisällä ja sen ulkopuolella, mutta vain perinnön kautta.
Suojattua pääsyn muokkaajaa voidaan soveltaa datajäseneen, menetelmään ja konstruktoriin. Sitä ei voi käyttää luokassa.
Se tarjoaa enemmän käytettävyyttä kuin oletusmuuntaja.
Esimerkki suojatusta pääsyn muokkaajasta
Tässä esimerkissä olemme luoneet kaksi pakettia pack ja mypack. A-luokan pakkauspaketti on julkinen, joten siihen pääsee käsiksi paketin ulkopuolelta. Mutta tämän paketin msg-metodi on julistettu suojatuksi, joten siihen pääsee luokan ulkopuolelta vain perinnön kautta.
//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) Julkinen
The julkisen pääsyn muokkaaja on saatavilla kaikkialla. Sillä on laajin kattavuus kaikista muista modifikaatioista.
Esimerkki julkisen pääsyn muokkaajasta
staattinen avainsana javassa
//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 Access Modifiers Method Overriding
Jos ohitat minkä tahansa menetelmän, ohitettu menetelmä (eli alaluokassa ilmoitettu) ei saa olla rajoittavampi.
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(); } }
Oletusmuuttaja on enemmän rajoittava kuin suojattu. Tästä syystä on olemassa käännösaikavirhe.