V tej vadnici bomo s pomočjo primerov spoznali Java Access Modifier, njegove vrste in kako jih uporabiti.
Kaj so modifikatorji dostopa?
V Javi se z modifikatorji dostopa nastavi dostopnost (vidnost) razredov, vmesnikov, spremenljivk, metod, konstruktorjev, podatkovnih članov in metod nastavitve. Na primer
class Animal ( public void method1() (… ) private void method2() (… ) )
V zgornjem primeru smo razglasili 2 metodi: method1 () in method2 (). Tukaj,
- method1 je
public
- To pomeni, da do njega lahko dostopajo drugi razredi. - method2 je
private
- To pomeni, da drugi razredi do njega ne morejo dostopati.
Upoštevajte ključno besedo public
in private
. To so modifikatorji dostopa v Javi. Znani so tudi kot modifikatorji vidnosti.
Opomba : Ne morete nastaviti modifikatorja dostopa za metode pridobivanja.
Vrste modifikatorja dostopa
Preden se naučite o vrstah modifikatorjev dostopa, se prepričajte, da poznate pakete Java.
V Javi obstajajo štiri ključne besede za modifikatorje dostopa, in sicer:
Modifikator | Opis |
Privzeto | izjave so vidne samo znotraj paketa (zasebni paket) |
Zasebno | izjave so vidne samo znotraj razreda |
Zaščiteno | izjave so vidne v paketu ali vseh podrazredih |
Javno | izjave so vidne povsod |
Privzeti modifikator dostopa
Če izrecno ne določimo nobenega modifikatorja dostopa za razrede, metode, spremenljivke itd., Potem je privzeto upoštevan privzeti modifikator dostopa. Na primer
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Tu ima razred Logger privzeti modifikator dostopa. In razred je viden vsem razredom, ki spadajo v paket defaultPackage. Če pa bomo poskusili uporabiti razred Logger v drugem razredu zunaj defaultPackage, bomo dobili napako pri prevajanju.
Modifikator zasebnega dostopa
Ko so spremenljivke in metode deklarirane private
, do njih ni mogoče dostopati zunaj razreda. Na primer
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"; ) )
V zgornjem primeru smo razglasili zasebno spremenljivko z imenom in zasebno metodo z imenom display()
. Ko zaženemo program, bomo dobili naslednjo napako:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Napaka je ustvarjena, ker poskušamo dostopati do zasebne spremenljivke in zasebne metode razreda podatkov iz razreda Main.
Morda se sprašujete, kaj, če moramo dostopati do teh zasebnih spremenljivk. V tem primeru lahko uporabimo metodo getters in setters. Na primer
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()); ) )
Izhod :
Ime je Programiz
V zgornjem primeru imamo zasebno spremenljivko z imenom. Za dostop do spremenljivke iz zunanjega razreda smo uporabili metode: getName()
in setName()
. Te metode se v Javi imenujejo getter in setter.
Tu smo uporabili metodo setter ( setName()
) za dodelitev vrednosti spremenljivki in getter metodo ( getName()
) za dostop do spremenljivke.
this
Ključno besedo znotraj setName () smo uporabili za sklicevanje na spremenljivko razreda. Če želite izvedeti več o tej ključni besedi, obiščite Javo to ključno besedo.
Opomba : V Javi ne moremo razglasiti razredov in vmesnikov za zasebne. Vgnezdene razrede pa lahko razglasimo za zasebne. Če želite izvedeti več, obiščite Java ugnezdeni in notranji razred.
Modifikator zaščitenega dostopa
Ko so metode in člani podatkov deklarirani protected
, lahko do njih dostopamo v istem paketu kot tudi iz podrazredov. Na primer
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(); ) )
Izhod :
Jaz sem žival
V zgornjem primeru imamo zaščiteno metodo, imenovano display()
znotraj razreda Animal. Razred Animal podeduje razred Dog. Če želite izvedeti več o dedovanju, obiščite Java Dedovanje.
Nato smo ustvarili predmetnega psa razreda Dog. Z objektom smo poskušali dostopati do zaščitene metode nadrejenega razreda.
Ker je do zaščitenih metod mogoče dostopati iz podrejenih razredov, lahko do razreda Animal dostopimo iz razreda Dog.
Opomba : V protected
Javi ne moremo prijaviti razredov ali vmesnikov .
Modifikator javnega dostopa
Ko so razglašene metode, spremenljivke, razredi itd. public
, Lahko do njih dostopamo od koder koli. Modifikator javnega dostopa nima omejitve obsega. Na primer
// 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(); ) )
Izhod :
Jaz sem žival. Imam 4 noge.
Tukaj,
- Javni razred Žival je dostopen iz glavnega razreda.
- Javna spremenljivka legCount je dostopna iz razreda Main.
- Do javne metode
display()
lahko dostopate iz razreda Main.
Modifikatorji dostopa, povzeti v eni sliki

Modifikatorji dostopa se v glavnem uporabljajo za inkapsulacijo. Lahko vam pomagam nadzorovati, kateri del programa lahko dostopa do članov predavanja. Tako je mogoče preprečiti zlorabo podatkov. Če želite izvedeti več o enkapsulaciji, obiščite Java Encapsulation.