Tässä opetusohjelmassa opit Java Access Modifierista, sen tyypeistä ja niiden käytöstä esimerkkien avulla.
Mitä ovat pääsymodifikaattorit?
Java-ohjelmassa pääsymodifikaattoreita käytetään luokkien, rajapintojen, muuttujien, menetelmien, konstruktorien, datajäsenten ja asetinsäätömenetelmien esteettömyyden (näkyvyyden) asettamiseen. Esimerkiksi,
class Animal ( public void method1() (… ) private void method2() (… ) )
Yllä olevassa esimerkissä olemme ilmoittaneet 2 menetelmää: method1 () ja method2 (). Tässä,
- method1 on
public
- Tämä tarkoittaa, että muut luokat voivat käyttää sitä. - method2 on
private
- Tämä tarkoittaa, että muut luokat eivät voi käyttää sitä.
Huomaa avainsana public
ja private
. Nämä ovat Java-käyttöoikeuksien muokkaajia. Ne tunnetaan myös näkyvyyden muokkaajina.
Huomaa : Et voi asettaa getters-menetelmien käyttömuokkainta.
Access Modifier -tyypit
Ennen kuin opit käyttötyyppien muokkauksista, varmista, että tiedät Java-paketeista.
Java-käyttöjärjestelmässä on neljä pääsynmuokkausavainsanaa ja ne ovat:
Muokkaaja | Kuvaus |
Oletus | ilmoitukset näkyvät vain paketissa (paketti yksityinen) |
Yksityinen | ilmoitukset näkyvät vain luokassa |
Suojattu | ilmoitukset näkyvät paketissa tai kaikissa alaluokissa |
Julkinen | ilmoitukset näkyvät kaikkialla |
Oletusoikeuksien muokkaus
Jos emme nimenomaisesti määritä mitään pääsymuuttujia luokille, menetelmille, muuttujille jne., Oletusarvoisesti käytetään oletusarvoista käyttömuokkainta. Esimerkiksi,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Tässä Logger-luokassa on oletusarvoinen käyttömuokkaus. Ja luokka näkyy kaikille luokille, jotka kuuluvat defaultPackage-pakettiin. Jos kuitenkin yritämme käyttää Logger-luokkaa toisessa luokassa defaultPackage-ohjelman ulkopuolella, saamme kokoamisvirheen.
Yksityisen pääsyn muokkaaja
Kun muuttujat ja menetelmät ilmoitetaan private
, niitä ei voi käyttää luokan ulkopuolella. Esimerkiksi,
class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )
Yllä olevassa esimerkissä olemme ilmoittaneet yksityisen muuttujan nimeltä nimi ja yksityisen menetelmän nimeltä display()
. Kun suoritamme ohjelmaa, saamme seuraavan virheen:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Virhe syntyy, koska yritämme käyttää Data-luokan yksityistä muuttujaa ja yksityistä menetelmää pääluokasta.
Saatat miettiä, mitä jos meidän on käytettävä näitä yksityisiä muuttujia. Tässä tapauksessa voimme käyttää getters and setters -menetelmää. Esimerkiksi,
class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )
Tuotos :
Nimi on Programiz
Yllä olevassa esimerkissä meillä on yksityinen muuttuja nimeltä nimi. Pääsyyn muuttujaan ulommalta luokalta olemme käyttäneet menetelmiä: getName()
ja setName()
. Näitä menetelmiä kutsutaan Java: ssa getteriksi ja setteriksi.
Tässä olemme käyttäneet setter-menetelmää ( setName()
) arvon antamiseen muuttujalle ja getter-menetelmää ( getName()
) muuttujan käyttämiseen.
Olemme käyttäneet this
avainsanaa setName () sisällä viitataksesi luokan muuttujaan. Jos haluat lisätietoja tästä avainsanasta, käy Java avainsanalla.
Huomaa : Emme voi julistaa luokkia ja rajapintoja yksityisiksi Java-käyttöjärjestelmässä. Sisäkkäiset luokat voidaan kuitenkin julistaa yksityisiksi. Lisätietoja on Java Nested- ja Inner Class -sivustoilla.
Suojattu pääsyn muokkaaja
Kun menetelmät ja tietojäsenet ilmoitetaan protected
, voimme käyttää niitä samassa paketissa sekä alaluokista. Esimerkiksi,
class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )
Tuotos :
Olen eläin
Yllä olevassa esimerkissä meillä on suojattu menetelmä, joka on nimetty eläinluokan display()
sisällä. Eläinluokan perii koiraluokka. Lisätietoja perinnöstä on Java-perinnössä.
Sitten loimme Koira-luokan objektikoiran. Yritimme käyttää objektin avulla pääluokan suojattua menetelmää.
Koska suojattuihin menetelmiin pääsee lapsiluokista, voimme käyttää eläinluokan menetelmää koiraluokasta.
Huomaa : Emme voi ilmoittaa luokkia tai käyttöliittymiä protected
Javassa.
Julkisen pääsyn muokkaaja
Kun menetelmät, muuttujat, luokat ja niin edelleen ilmoitetaan public
, voimme käyttää niitä mistä tahansa. Julkisen pääsyn muokkaajalla ei ole laajuusrajoitusta. Esimerkiksi,
// Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )
Tuotos :
Olen eläin. Minulla on 4 jalkaa.
Tässä,
- Eläinten julkiseen luokkaan pääsee pääluokasta.
- Julkiseen muuttujaan legCount pääsee pääluokasta.
- Julkista menetelmää
display()
voi käyttää pääluokasta.
Pääsyn muokkaajat Yhteenveto yhdestä kuvasta

Pääsyn muokkaajia käytetään pääasiassa kapselointiin. Voin auttaa meitä hallitsemaan, mikä osa ohjelmaa voi käyttää luokan jäseniä. Joten tietojen väärinkäyttö voidaan estää. Lisätietoja kapseloinnista on Java-kapseloinnissa.