În acest tutorial, vom învăța despre modificatorul de acces Java, tipurile sale și cum să le folosim cu ajutorul exemplelor.
Ce sunt modificatorii de acces?
În Java, modificatorii de acces sunt folosiți pentru a seta accesibilitatea (vizibilitatea) claselor, interfețelor, variabilelor, metodelor, constructorilor, membrilor datelor și metodelor setter. De exemplu,
class Animal ( public void method1() (… ) private void method2() (… ) )
În exemplul de mai sus, am declarat 2 metode: method1 () și method2 (). Aici,
- method1 este
public
- Acest lucru înseamnă că poate fi accesat de alte clase. - method2 este
private
- Acest lucru înseamnă că nu poate fi accesat de alte clase.
Rețineți cuvântul cheie public
și private
. Acestea sunt modificatori de acces în Java. Ele sunt, de asemenea, cunoscute sub numele de modificatori de vizibilitate.
Notă : Nu puteți seta modificatorul de acces al metodelor de recuperare.
Tipuri de modificator de acces
Înainte de a afla despre tipurile de modificatori de acces, asigurați-vă că știți despre pachetele Java.
Există patru cuvinte cheie modificatoare de acces în Java și acestea sunt:
Modificator | Descriere |
Mod implicit | declarațiile sunt vizibile numai în pachet (pachetul privat) |
Privat | declarațiile sunt vizibile numai în cadrul clasei |
Protejat | declarațiile sunt vizibile în pachet sau în toate subclasele |
Public | declarațiile sunt vizibile peste tot |
Modificator de acces implicit
Dacă nu specificăm în mod explicit niciun modificator de acces pentru clase, metode, variabile etc., atunci implicit este luat în considerare modificatorul de acces implicit. De exemplu,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Aici, clasa Logger are modificatorul de acces implicit. Și clasa este vizibilă pentru toate clasele care aparțin pachetului defaultPackage. Cu toate acestea, dacă încercăm să folosim clasa Logger într-o altă clasă în afara defaultPackage, vom primi o eroare de compilare.
Modificator de acces privat
Când sunt declarate variabile și metode private
, acestea nu pot fi accesate în afara clasei. De exemplu,
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"; ) )
În exemplul de mai sus, am declarat o variabilă privată numită nume și o metodă privată numită display()
. Când rulăm programul, vom primi următoarea eroare:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Eroarea este generată deoarece încercăm să accesăm variabila privată și metoda privată a clasei Data din clasa Main.
S-ar putea să vă întrebați dacă trebuie să accesăm acele variabile private. În acest caz, putem folosi metoda getters și seters. De exemplu,
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()); ) )
Ieșire :
Numele este Programiz
În exemplul de mai sus, avem o variabilă privată numită nume. Pentru a accesa variabila din clasa exterioară, am folosit metode: getName()
și setName()
. Aceste metode se numesc getter și setter în Java.
Aici, am folosit metoda setter ( setName()
) pentru a atribui valoare variabilei și metoda getter ( getName()
) pentru a accesa variabila.
Am folosit this
cuvinte cheie în setName () pentru a ne referi la variabila clasei. Pentru a afla mai multe despre acest cuvânt cheie, vizitați Java acest cuvânt cheie.
Notă : Nu putem declara clase și interfețe private în Java. Cu toate acestea, clasele imbricate pot fi declarate private. Pentru a afla mai multe, vizitați Java Nested și Inner Class.
Modificator de acces protejat
Atunci când sunt declarate metodele și membrii de date protected
, le putem accesa în același pachet, precum și din subclase. De exemplu,
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(); ) )
Ieșire :
Sunt un animal
În exemplul de mai sus, avem o metodă protejată denumită display()
în clasa Animal. Clasa Animal este moștenită de clasa Câinilor. Pentru a afla mai multe despre moștenire, accesați Java Inheritance.
Apoi am creat un câine obiect din clasa Dog. Folosind obiectul am încercat să accesăm metoda protejată a clasei părinte.
Deoarece metodele protejate pot fi accesate din clasele pentru copii, putem accesa metoda clasei Animal din clasa Câini.
Notă : Nu putem declara clase sau interfețe protected
în Java.
Modificator de acces public
Când sunt declarate metode, variabile, clase și așa mai departe public
, atunci le putem accesa de oriunde. Modificatorul de acces public nu are restricții de domeniu. De exemplu,
// 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(); ) )
Ieșire :
Sunt un animal. Am 4 picioare.
Aici,
- Clasa publică Animal este accesată din clasa Main.
- Variabila publică legCount este accesată din clasa Main.
- Metoda publică
display()
este accesată din clasa Main.
Modificatori de acces Rezumat într-o singură figură

Modificatorii de acces sunt folosiți în principal pentru încapsulare. Vă putem ajuta să controlăm ce parte a unui program poate accesa membrii unei clase. Astfel, utilizarea abuzivă a datelor poate fi prevenită. Pentru a afla mai multe despre încapsulare, vizitați Encapsulare Java.