Javassa käyttöoikeusmuuntimet ovat olennaisia työkaluja, jotka määrittävät kuinka luokan jäseniä, kuten muuttujia, menetelmiä ja jopa itse luokkaa voidaan käyttää ohjelmamme muista osista.
Javassa on saatavilla neljän tyyppisiä käyttöoikeusmuutoksia:
Käytä muokkauksia JavassaYksityinen pääsyn muokkaaja
Yksityisen pääsyn muokkaaja määritetään avainsanalla yksityinen. Yksityisiksi ilmoitetut menetelmät tai datajäsenet ovat käytettävissä vain siinä luokassa, jossa ne on ilmoitettu.
Java
class Person { // private variable private String name; public void setName(String name) { this.name = name; // accessible within class } public String getName() { return name; } } public class Geeks { public static void main(String[] args) { Person p = new Person(); p.setName('Alice'); // System.out.println(p.name); // Error: 'name' // has private access System.out.println(p.getName()); } }
Lähtö
Alice
Selitys: Suora pääsy nimeen ei ole sallittu kapselointia pakottavan henkilön ulkopuolella.
Oletuskäytön muokkaus
Jos luokkametodille tai datajäsenelle ei ole määritetty pääsyoikeusmuuttajaa, sillä sanotaan olevan oletusarvoinen käyttöoikeusmuuttaja. Tämä tarkoittaa, että vain saman paketin luokat voivat käyttää sitä.
Javaclass Car { String model; // default access } public class Main { public static void main(String[] args){ Car c = new Car(); c.model = 'Tesla'; // accessible within the same package System.out.println(c.model); } }
Lähtö
Tesla
Selitys: Jäseniä, joilla on oletuskäyttöoikeus, ei voi käyttää eri paketin luokista.
Geeks.java: Oletusluokka samassa paketissa
Java// default access modifier package p1; // Class Geek is having // Default access modifier class Geek { void display() { System.out.println('Hello World!'); } }
GeeksNew.java: Oletusluokka eri paketista (kontrastia varten)
C++// package with default modifier package p2; import p1.*; // importing package p1 // This class is having // default access modifier class GeekNew { public static void main(String args[]) { // Accessing class Geek from package p1 Geek o = new Geek(); o.display(); } }
Selitys: Tässä esimerkissä ohjelma näyttää käännösaikavirheen, kun yritämme päästä oletusmuutosluokkaan eri paketista.
Suojatun pääsyn muokkaaja
Suojatun pääsyn muokkaaja määritetään avainsanalla suojattu. Suojatuiksi julistetut menetelmät tai datajäsenet ovat käytettävissä samassa paketissa tai alaluokissa eri paketeissa.
Javaclass Vehicle { protected int speed; // protected member } class Bike extends Vehicle { void setSpeed(int s) { speed = s; // accessible in subclass } int getSpeed() { return speed; // accessible in subclass } } public class Main { public static void main(String[] args){ Bike b = new Bike(); b.setSpeed(100); System.out.println('Access via subclass method: ' + b.getSpeed()); Vehicle v = new Vehicle(); System.out.println(v.speed); } }
Lähtö
Access via subclass method: 100 0
Selitys: nopeus on käytettävissä alaluokkamenetelmien ja muiden luokkien kautta samassa paketissa, mutta suora pääsy eri paketista (ei-alaluokka) epäonnistuisi.
Julkisen käytön muokkaus
Julkisen pääsyn muokkaaja määritetään avainsanalla public. Julkiset jäsenet ovat tavoitettavissa kaikkialta ohjelmassa. Julkisten tietojen jäsenmäärää ei ole rajoitettu.
Javaclass MathUtils { public static int add(int a int b) { return a + b; } } public class Main { public static void main(String[] args) { System.out.println(MathUtils.add(5 10)); // accessible anywhere } }
Lähtö
15
Selitys: add() on maailmanlaajuisesti saatavilla julkisen muokkaimen ansiosta.
Huipputason luokkia tai liitäntöjä ei voida ilmoittaa yksityisiksi, koska yksityinen tarkoittaa "näkyy vain sulkevassa luokassa".
Java-käyttöoikeusmuutosten vertailutaulukko
Access-ModifierMilloin kutakin pääsyn muokkaajaa tulee käyttää tosielämän projekteissa
- Yksityinen: Ideana tulisi käyttää mahdollisimman rajoittavaa pääsyä, joten yksityistä tulisi käyttää mahdollisimman paljon.
- Oletus (Paketti-yksityinen): Käytetään usein pakettikäyttöisissä apuohjelmissa tai apuohjelmissa.
- Suojattu: Käytetään yleisesti perintöpohjaisissa malleissa, kuten kehyslaajennuksissa.
- Julkinen : Tätä käytetään API-päätepisteiden palveluluokissa tai apumenetelmissä, jotka jaetaan sovelluksen eri osissa.