Java-käyttöoikeuksien muokkaajat selitetty

Mitä ovat pääsymodifikaattorit?

Oletko koskaan halunnut määritellä, miten ihmiset pääsevät joihinkin omaisuuksiisi? Et halua kenenkään käyttävän alusvaatteita. Lähimmät ystäväsi ja sukulaisesi voivat kuitenkin käyttää villapaita ja ehkä autoa.

Samoin kuin asetat käyttöoikeuksien tason positioihisi, Java hallitsee myös pääsyä. Haluat määrittää muuttujien, menetelmien ja luokkien käyttöoikeustason sen mukaan, mitä muita luokkia haluat käyttää.

Java tarjoaa 4 tasoa käyttömuokkaajia. Tämä tarkoittaa, että voit muokata muuttujan, menetelmän tai luokan käyttöoikeuksia neljällä tavalla. Nämä 4 tapaa ovat yksityisiä, julkisia, suojattuja ja oletusasetuksia.

Näitä pääsymuuttujia voidaan käyttää kenttiin, menetelmiin ja luokkiin (Luokat ovat erityistapaus, tarkastelemme niitä tämän artikkelin lopussa). Tässä on lyhyt yleiskatsaus1 siitä, mitkä Access Levelsovat kullekin Access Modifier:

Access Modifiers -taulukko:

Access Modifiers -taulukko

Yksityisen pääsyn muokkaaja

Antaa muuttujan tai menetelmän käyttää vain siinä luokassa, jossa se luotiin. Mikään muu luokka muuttujan tai menetelmän luovan luokan ulkopuolella ei voi käyttää sitä. Tämä muistuttaa läheisesti sisäelimiäsi. Ne ovat vain omistajan saatavilla. Jotta muuttuja tai menetelmä olisi yksityinen, sinun on yksinkertaisesti liitettävä yksityinen avainsana muuttujan tai menetelmän tyypin eteen. Käytetään yksityistä koodausesimerkissä. Jos pankki haluaa antaa lainalleen 10 prosentin koron, se varmistaa, että korkomuuttuja (oletetaan int int_rate;) pysyisi yksityisenä, koska mikään muu luokka ei yrittäisi käyttää sitä ja muuttaa sitä. Esimerkiksi;

private String name;

Yllä oleva esimerkki luo muuttujan nimeltä nimi ja varmistaa, että se on käytettävissä vain siinä luokassa, josta se luotiin.

Toinen esimerkki menetelmästä on

private void setAge(){ System.out.println("Set Age"); }

Yllä oleva esimerkki varmistaa, että menetelmä setAge on käytettävissä vain luokassa, josta se luotiin, eikä missään muualla.

Julkisen pääsyn muokkaaja

Julkisen pääsyn muokkaaja on suora vastakohta yksityisen pääsyn muokkaajalle. Luokka, menetelmä tai muuttuja voidaan julistaa julkiseksi ja se tarkoittaa, että se on käytettävissä mistä tahansa luokasta. Julkisen pääsyn modifikaattoria voidaan verrata julkiseen kouluun, johon kuka tahansa voi hakea pääsyä ja päästä.

Julkiseen luokkaan, menetelmään tai muuttujaan pääsee millä tahansa muulla luokalla milloin tahansa.

Esimerkiksi luokan julistamiseksi julkiseksi tarvitset vain:

public class Animal{ }

Sellaisena eläinluokkaan pääsee millä tahansa muulla luokalla.

public int age; public int getAge(){ }

Edellä on tapoja määrittää muuttuja ja menetelmä julkisiksi.

Oletusoikeuksien muokkaaja

Oletusarvoinen käyttömuokkaaja eroaa kaikista muista käyttömuokkaajista, koska siinä ei ole avainsanaa. Jos haluat käyttää oletusarvoista käyttömuokkainta, sinun ei tarvitse käyttää mitään muita käyttöoikeuksien muokkaajia, mikä tarkoittaa yksinkertaisesti sitä, että käytät oletusarvoista käyttömuokkainta.

Voit esimerkiksi käyttää luokan oletusarvoista käyttöoikeuksien muokkaajaa

class Bird{ }

Tämä tarkoittaa periaatteessa, että käytät oletusarvoista käyttömuokkainta. Oletusmuunnoksen avulla muuttuja, menetelmä tai luokka ovat muiden paketin luokkien käytettävissä. Paketti on kokoelma aiheeseen liittyviä luokkia tiedostohakemistossa. Lisätietoja paketeista on pakettien osiossa.

Muuta muuttujaa, menetelmää tai luokkaa, joka on ilmoitettu käyttävän oletusarvoista pääsymuuttujaa, ei voida käyttää millään muulla luokalla sen paketin ulkopuolella, josta se on ilmoitettu.

int age; void setNewAge(){ }

Yllä on joitain tapoja käyttää muuttujan tai menetelmän oletusarvoista käyttömuokkainta. Älä unohda, oletusarvoisella käyttömuokkaimella ei ole avainsanaa. Kolmen muun pääsymodifikaattorin puuttuminen tarkoittaa, että käytät oletusarvoista käyttömuokkainta.

Suojattu pääsyn muokkaaja

Suojattu käyttömuokkaaja liittyy läheisesti oletusarvoiseen pääsymuuttujaan. Suojatulla käyttömuokkaimella on oletusarvoisen käyttömuokkaajan ominaisuudet, mutta pienellä parannuksella.

Muuttuja ja menetelmä ovat ainoat, jotka käyttävät suojattua pääsynmuuttajaa. Pieni parannus on, että luokan paketin ulkopuolella oleva luokka, josta muuttuja tai menetelmä ilmoitettiin, voi käyttää mainittua muuttujaa tai menetelmää. Tämä on mahdollista VAIN, jos se perii luokan.

Toisen paketin luokan, joka näkee suojatut muuttujat tai menetelmät, on oltava laajentanut muuttujien tai menetelmien luonut luokka.

Huomaa ilman perimisen etua, oletusarvoisella pääsynmuokkaimella on täsmälleen sama pääsy kuin suojatulla pääsynmuokkaimella.

Alla on esimerkkejä suojatun käyttömuokkaimen käytöstä:

protected int age; protected String getName(){ return "My Name is You"; }

Luokkien pääsyn muokkaajat

Oletusarvoisesti luokilla voi olla vain 2 muokkaajaa:

  • julkinen
  • ei muokkaajaa (oletusmuuttaja)

Joten tämä tarkoittaa, että luokkiin ei voida koskaan asettaa privatetai protected?

Tämä on loogista, miksi haluat tehdä yksityisen luokan? Mikään muu luokka ei pystyisi käyttämään sitä. Mutta joskus voit upottaa luokan toiseen luokkaan. Nämä erikoisluokat,, inner classesvoidaan asettaa yksityisiksi tai suojatuiksi, jotta vain sen ympäröivät luokat voivat käyttää sitä:

public class Car { private String brand; private Engine engine; // ... private class Engine { // ... } }

Yllä olevassa esimerkissä vain Carluokka voi käyttää Engineluokkaa. Tästä voi olla hyötyä joissakin tapauksissa.

Muita luokkia ei voi koskaan asettaa protectedtai private, koska sillä ei ole mitään järkeä. protectedPääsy muokkaaja käytetään tehdä asioita package-private, mutta johon voi olla saatavilla alaluokkiin. Javassa ei ole sellaista käsitettä kuin 'alipaketit' tai 'pakettiperintö'.