Šioje pamokoje su pavyzdžių pagalba sužinosime apie „Java Access Modifier“, jo tipus ir kaip juos naudoti.
Kas yra prieigos modifikatoriai?
„Java“ programoje prieigos modifikatoriai naudojami nustatant klasių, sąsajų, kintamųjų, metodų, konstruktorių, duomenų narių ir seterio metodų prieinamumą (matomumą). Pavyzdžiui,
class Animal ( public void method1() (… ) private void method2() (… ) )
Ankstesniame pavyzdyje mes deklaravome 2 metodus: method1 () ir method2 (). Čia
- method1 is
public
- tai reiškia, kad prie jo gali prisijungti kitos klasės. - method2 is
private
- Tai reiškia, kad jo negali pasiekti kitos klasės.
Atkreipkite dėmesį į raktinį žodį public
ir private
. Tai yra „Java“ prieigos modifikatoriai. Jie taip pat žinomi kaip matomumo modifikatoriai.
Pastaba : Jūs negalite nustatyti „Getters“ metodų prieigos modifikatoriaus.
Prieigos modifikatoriaus tipai
Prieš sužinodami apie prieigos modifikatorių tipus, įsitikinkite, kad žinote apie „Java“ paketus.
„Java“ yra keturi prieigos modifikatorių raktiniai žodžiai:
Modifikatorius | apibūdinimas |
Numatytas | deklaracijos matomos tik pakuotėje (privatus paketas) |
Privatus | deklaracijos matomos tik klasėje |
Saugoma | deklaracijos yra matomos pakuotėje arba visuose poklasiuose |
Viešas | deklaracijos matomos visur |
Numatytasis prieigos modifikatorius
Jei mes aiškiai nenurodome jokio prieigos modifikatoriaus klasėms, metodams, kintamiesiems ir kt., Pagal numatytuosius nustatymus laikomas numatytasis prieigos modifikatorius. Pavyzdžiui,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Čia „Logger“ klasėje yra numatytasis prieigos modifikatorius. O klasė matoma visoms klasėms, kurios priklauso numatytam paketui „Package“. Tačiau jei bandysime naudoti „Logger“ klasę kitoje klasėje, išskyrus „defaultPackage“, gausime kompiliavimo klaidą.
Privačios prieigos modifikatorius
Kai deklaruojami kintamieji ir metodai private
, prie jų negalima prisijungti už klasės ribų. Pavyzdžiui,
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"; ) )
Ankstesniame pavyzdyje mes paskelbėme privatų kintamąjį pavadinimu vardas ir privatus metodas display()
. Vykdydami programą gausime šią klaidą:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Klaida yra sukurta, nes mes bandome pasiekti duomenų klasės privatų kintamąjį ir privatų metodą iš pagrindinės klasės.
Jums gali būti įdomu, ką daryti, jei mums reikės prieiti prie tų privačių kintamųjų. Tokiu atveju galime naudoti getters ir seters metodą. Pavyzdžiui,
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()); ) )
Išvestis :
Pavadinimas yra Programiz
Ankstesniame pavyzdyje mes turime privatų kintamąjį pavadinimu. Norėdami pasiekti kintamąjį iš išorinės klasės, mes naudojome metodus: getName()
ir setName()
. Šie metodai „Java“ vadinami „getter“ ir „setter“.
Čia mes naudojome setter metodą ( setName()
), kad priskirtume kintamajam vertę, ir getter metodą ( getName()
), norėdami pasiekti kintamąjį.
Mes this
nurodėme raktinį žodį setName (), norėdami nurodyti klasės kintamąjį. Norėdami sužinoti daugiau apie šį raktinį žodį, apsilankykite „Java this Keyword“.
Pastaba : Mes negalime paskelbti klasių ir sąsajų privačiomis „Java“. Tačiau įdėtos klasės gali būti paskelbtos privačiomis. Norėdami sužinoti daugiau, apsilankykite „Java Nested“ ir „Inner Class“.
Apsaugotas prieigos modifikatorius
Kai deklaruojami metodai ir duomenų nariai protected
, prie jų galime prisijungti tame pačiame pakete, taip pat iš poklasių. Pavyzdžiui,
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(); ) )
Išvestis :
Aš gyvūnas
Ankstesniame pavyzdyje mes turime apsaugotą metodą, pavadintą display()
gyvūnų klasėje. Gyvūnų klasę paveldi šunų klasė. Norėdami sužinoti daugiau apie paveldėjimą, apsilankykite „Java“ paveldėjime.
We then created an object dog of the Dog class. Using the object we tried to access the protected method of the parent class.
Since protected methods can be accessed from the child classes, we are able to access the method of Animal class from the Dog class.
Note: We cannot declare classes or interfaces protected
in Java.
Public Access Modifier
When methods, variables, classes, and so on are declared public
, then we can access them from anywhere. The public access modifier has no scope restriction. For example,
// 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(); ) )
Output:
I am an animal. I have 4 legs.
Here,
- The public class Animal is accessed from the Main class.
- The public variable legCount is accessed from the Main class.
- The public method
display()
is accessed from the Main class.
Access Modifiers Summarized in one figure

Prieigos modifikatoriai daugiausia naudojami kapsuliavimui. Aš galiu padėti mums kontroliuoti, kokia programos dalis gali pasiekti klasės narius. Taigi galima išvengti piktnaudžiavimo duomenimis. Norėdami sužinoti daugiau apie kapsuliavimą, apsilankykite „Java Encapsulation“.