Modifikátory prístupu v jazyku Java

Modifikátory prístupu v jazyku Java

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

Access-Modifiers-in-Java-1Modifiká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á_triedaAccess-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