Javalla, julkinen ja yksityinen ovat avainsanoja jotka tunnetaan nimellä an pääsyn muokkaaja tai määrittäjä . Se rajoittaa luokan laajuutta tai saavutettavuutta, rakentaja , muuttujia , menetelmä s ja datajäsenet. Se riippuu siitä, mihin sitä sovelletaan. Java tarjoaa neljää tyyppiä pääsyn muokkaajia: julkinen, yksityinen, suojattu , ja oletuksena . Mutta tässä osiossa keskustelemme vain kahdesta julkisesta ja yksityisestä, ja keskustelemme myös ero julkisen ja yksityisen pääsyn määrittäjän välillä esimerkin kanssa.
Pääsyn muokkaajat ohjaavat, voivatko muut luokat käyttää tiettyä kenttää tai kutsua tiettyä menetelmää. Java tarjoaa kaksi pääsynhallintatasoa:
Seuraavassa taulukossa näkyy julkisten ja yksityisten muokkaajien sallimat jäsenten käyttöoikeustasot.
tehdasmenetelmän suunnittelukuvio
Etkö vieläkään ymmärrä eroja näiden kahden välillä? Haluan näyttää sinulle kuvan, joka osoittaa, kuinka käyttöoikeustasot vaikuttavat näkyvyyteen. Seuraavassa kuvassa on kaksi pakettia p1 ja p2 . Jokainen paketti sisältää kaksi luokkaa Demo1 ja Demo2 (paketissa p1) ja Demo3 ja Demo4 (pakkauksessa p2).
Seuraava taulukko kuvaa luokkien näkyvyyttä, jos luokat tehdään julkisiksi ja yksityisiksi yksitellen. Yllä olevassa kuvassa Demo1 on ainoa luokka, joka on näkyvissä kullekin pääsymäärittäjälle.
Keskustellaan siitä yksityiskohtaisesti.
Julkisen käytön muokkaus
Se voidaan määrittää käyttämällä julkinen avainsana. Sen laajuus tai saavutettavuus on laajin muista pääsymäärityksistä. Julkisiksi ilmoitettuihin muuttujiin, luokkiin ja menetelmiin pääsee käsiksi kaikkialta ohjelmasta. Se ei rajoita julkisten tietojen jäsenten laajuutta. Jos julistamme menetelmät ja luokat julkisiksi, ne rikkovat myös periaatetta kapselointi . Voimme käyttää sitä myös huippuluokan luokissa.
Käytetään yksityisen käyttöoikeuden määritystä kohdassa a Java ohjelma paremman ymmärtämisen vuoksi.
Demo1.java
concat java-merkkijono
package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } }
Demo2.java
package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } }
Lähtö
Javatpoint
Yksityinen pääsyn muokkaaja
Se on julkisen muuntimen vastakohta. Se voidaan määrittää käyttämällä yksityinen avainsana, jota seuraa luokan nimi (käytetään vain sisäkkäisissä luokissa) tai menetelmän nimi tai datajäsen. Emme voi käyttää yksityisen pääsyn määritettä ylätason luokissa tai käyttöliittymät . Yksityisiksi ilmoitettuihin muuttujiin, menetelmiin ja luokkiin pääsee käsiksi vain siinä luokassa, jossa ne on ilmoitettu, tai perimällä pääluokat. Se on Java:n rajoitetuin pääsymääritys. Se on kapseloinnin korkeusmuoto.
ämpärilajittelu
- Emme voi ohittaa menetelmät, jotka on ilmoitettu yksityisiksi.
- Jos käytämme yksityistä muuntajaa rakentajan kanssa, vältämme sen aliluokittelun.
- Se piilottaa luokat muilta saman sisällä olevilta luokilta paketti .
Käytetään Java-ohjelman yksityisen pääsyn määritteen ymmärtämiseksi paremmin.
Seuraavassa esimerkissä olemme ilmoittaneet kaksi luokkaa: Demo1 ja Demo2. Luokassa Demo1 olemme määrittäneet menetelmän näytä() yksityisenä. Luokka Demo2 sisältää main()-metodin, jossa olemme luoneet luokan Demo1 objektin. Sen jälkeen yritämme päästä luokan Demo1 yksityiseen menetelmään luokasta Demo2, mikä ei ole mahdollista. Mutta silti, suoritamme ohjelman nähdäksemme, minkä virheen se näyttää.
class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } }
Kun suoritamme yllä olevan ohjelman, se näyttää seuraavan virheen:
Ero julkisen ja yksityisen käyttöoikeusmäärityksen välillä Javassa
Suurin ero julkisten ja yksityisten muokkaajien välillä on sen näkyvyys. Java luokittelee luokan jäsenten näkyvyyden seuraavasti:
- Alaluokat samassa paketissa
- Ei-alaluokat samassa paketissa
- Alaluokat eri paketeissa
- Luokat eivät ole samassa paketissa tai alaluokissa
Kumpaa meidän pitäisi käyttää?
Meidän tulisi käyttää julkisen käyttöoikeuden muokkaajaa, jos haluamme tehdä menetelmän tai ominaisuuden näkyväksi mistä tahansa, muista luokista ja objektin esiintymistä. Käytä yksityisen käyttöoikeuden muokkaajaa, jos haluat tehdä menetelmän tai ominaisuuden näkyväksi vain omassa luokassaan. Vältä julkisia kenttiä vakioita lukuun ottamatta.