Modifikatorji dostopa v Javi

Modifikatorji dostopa v Javi

V Javi so modifikatorji dostopa bistvena orodja, ki določajo, kako je mogoče dostopati do članov razreda, kot so metode spremenljivk, in celo do samega razreda iz drugih delov našega programa.

V Javi so na voljo 4 vrste modifikatorjev dostopa: 

Access-Modifiers-in-Java-1Modifikatorji dostopa v Javi

Modifikator zasebnega dostopa

Modifikator zasebnega dostopa je določen s ključno besedo private. Metode ali podatkovni člani, ki so deklarirani kot zasebni, so dostopni samo znotraj razreda, v katerem so deklarirani.

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  ());      }   }   

Izhod
Alice  

Pojasnilo: Neposredni dostop do imena ni dovoljen zunaj osebe, ki izvaja enkapsulacijo.

Privzeti modifikator dostopa

Če za metodo razreda ali podatkovnega člana ni določen modifikator dostopa, se reče, da ima privzeti modifikator dostopa. To pomeni, da lahko do njega dostopajo samo razredi znotraj istega paketa.

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  );      }   }   

Izhod
Tesla  

Pojasnilo: Do članov s privzetim dostopom ni mogoče dostopati iz razredov v drugem paketu.

Geeks.java: Privzeti razred v istem paketu

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

GeeksNew.java: Privzeti razred iz drugega paketa (za 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  ();         }      }   

Pojasnilo:  V tem primeru bo program prikazal napako med prevajanjem, ko poskušamo dostopati do privzetega modifikatorskega razreda iz drugega paketa.

Modifikator zaščitenega dostopa

Modifikator zaščitenega dostopa je določen s ključno besedo protected. Metode ali podatkovni člani, ki so deklarirani kot zaščiteni, so dostopni znotraj istega paketa ali podrazredov v različnih paketih.

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  );      }   }   

Izhod
Access via subclass method: 100 0  

Pojasnilo: hitrost je dostopna prek metod podrazreda in drugih razredov v istem paketu, vendar neposreden dostop iz drugega paketa (ki ni podrazred) ne bi uspel.

Modifikator javnega dostopa

Modifikator javnega dostopa je določen s ključno besedo public. Javni člani so dostopni od koder koli v programu. Omejitev glede obsega članov javnih podatkov ni.

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      }   }   

Izhod
15  

Pojasnilo: add() je globalno dostopen zaradi modifikatorja public.

Razredov ali vmesnikov na najvišji ravni ni mogoče razglasiti za zasebne, ker zasebno pomeni "viden samo znotraj razreda, ki ga obdaja".

Primerjalna tabela modifikatorjev dostopa v Javi

isti_razredModifikator dostopa

Kdaj uporabiti posamezen modifikator dostopa v projektih iz resničnega sveta

  • Zasebno: Zamisel bi morala biti uporaba čim bolj restriktivnega dostopa, tako da bi bilo treba čim bolj uporabljati zasebno.
  • Privzeto (Zasebni paket): Pogosto se uporablja v pripomočkih ali pomožnih razredih v obsegu paketa.
  • Zaščiteno: Pogosto se uporablja v načrtih, ki temeljijo na dedovanju, kot so razširitve ogrodja.
  • Javno : To se uporablja za storitvene razrede končnih točk API-ja ali metode pripomočkov, ki jih delijo različni deli aplikacije.


Ustvari kviz