Java Access Modifiers (esimerkkejä)

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 publicja 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 thisavainsanaa 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ä protectedJavassa.

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

Kaikkien Java-käyttöoikeuksien muokkaajien käytettävyys

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.

Mielenkiintoisia artikkeleita...