logo

Modifikátory prístupu v jazyku Java

V Jave sú k dispozícii 4 typy modifikátorov prístupu: 

Access-Modifiers-in-Java-1' title=Modifikátory prístupu v jazyku Java

Modifikátor súkromného prístupu

Modifikátor súkromného prístupu sa špecifikuje pomocou kľúčového slova private. Metódy alebo údajové členy deklarované ako súkromné ​​sú prístupné iba v rámci triedy, v ktorej sú deklarované.



Java
class Person {  // private variable  private String name;  public void setName(String name) {  this.name = name; // accessible within class  }  public String getName() { return name; } } public class Geeks {  public static void main(String[] args)  {  Person p = new Person();  p.setName('Alice');  // System.out.println(p.name); // Error: 'name'  // has private access  System.out.println(p.getName());  } } 

Výstup
Alice 

Vysvetlenie: Priamy prístup k menu nie je povolený zvonku Osoba presadzujúca zapuzdrenie.

Predvolený modifikátor prístupu

Keď nie je špecifikovaný žiadny modifikátor prístupu pre metódu triedy alebo údajový člen, hovorí sa, že má štandardne predvolený modifikátor prístupu. To znamená, že k nemu majú prístup iba triedy v rámci toho istého balíka.

Java
class Car {  String model; // default access } public class Main {    public static void main(String[] args){    Car c = new Car();  c.model = 'Tesla'; // accessible within the same package  System.out.println(c.model);  } } 

Výstup
Tesla 

Vysvetlenie: K členom s predvoleným prístupom nie je možné pristupovať z tried v inom balíku.

Geeks.java: Predvolená trieda v rámci toho istého balíka

Java
// default access modifier  package p1;  // Class Geek is having  // Default access modifier  class Geek  {   void display()   {   System.out.println('Hello World!');   }  } 

GeeksNew.java: Predvolená trieda z iného balíka (pre kontrast)

C++
// package with default modifier  package p2;  import p1.*; // importing package p1 // This class is having  // default access modifier  class GeekNew {   public static void main(String args[]) {     // Accessing class Geek from package p1   Geek o = new Geek();   o.display();   }  } 

Vysvetlenie:  V tomto príklade program zobrazí chybu pri kompilácii, keď sa pokúsime získať prístup k predvolenej triede modifikátorov z iného balíka.

Modifikátor chráneného prístupu

Modifikátor chráneného prístupu je špecifikovaný pomocou kľúčového slova protected. Metódy alebo dátové členy deklarované ako chránené sú prístupné v rámci rovnakého balíka alebo podtried v rôznych balíkoch.

Java
class Vehicle {  protected int speed; // protected member } class Bike extends Vehicle {  void setSpeed(int s)  {  speed = s; // accessible in subclass  }  int getSpeed()  {  return speed; // accessible in subclass  } } public class Main {  public static void main(String[] args){    Bike b = new Bike();  b.setSpeed(100);  System.out.println('Access via subclass method: '  + b.getSpeed());  Vehicle v = new Vehicle();  System.out.println(v.speed);  } } 

Výstup
Access via subclass method: 100 0 

Vysvetlenie: rýchlosť je prístupná prostredníctvom metód podtriedy a iných tried v rovnakom balíku, ale priamy prístup z iného balíka (nie podtriedy) by zlyhal.

Modifikátor verejného prístupu

Modifikátor verejného prístupu sa špecifikuje pomocou kľúčového slova public. Verejní členovia sú prístupní odkiaľkoľvek v programe. Neexistuje žiadne obmedzenie rozsahu členov s verejnými údajmi.

Java
class MathUtils {     public static int add(int a int b) {  return a + b;  } } public class Main {    public static void main(String[] args) {    System.out.println(MathUtils.add(5 10)); // accessible anywhere  } } 

Výstup
15 

Vysvetlenie: add() je globálne prístupné vďaka modifikátoru public.

Triedy alebo rozhrania najvyššej úrovne nemožno deklarovať ako súkromné, pretože súkromné ​​znamená „viditeľné iba v rámci obklopujúcej triedy“.

Porovnávacia tabuľka modifikátorov prístupu v Jave

rovnaká_trieda' loading='lazy' title=Access-Modifier

Kedy použiť každý modifikátor prístupu v projektoch skutočného sveta

  • Súkromné: Myšlienkou by malo byť použitie čo najobmedzujúceho prístupu, takže súkromný by sa mal využívať čo najviac.
  • Predvolené (Package-Private): Často sa používa v obslužných programoch alebo pomocných triedach s rozsahom balíkov.
  • Chránené: Bežne sa používa v dizajnoch založených na dedičnosti, ako sú rozšírenia rámca.
  • Verejné : Používa sa pre triedy služieb koncových bodov API alebo pomocné metódy zdieľané v rôznych častiach aplikácie.


Vytvoriť kvíz