Pasiekite modifikatorius Java

Pasiekite modifikatorius Java

„Java“ prieigos modifikatoriai yra esminiai įrankiai, apibrėžiantys, kaip klasės nariai, pavyzdžiui, kintamųjų metodai, ir net pati klasė gali būti pasiekiami iš kitų mūsų programos dalių.

„Java“ yra 4 prieigos modifikatorių tipai: 

Access-Modifiers-in-Java-1Pasiekite modifikatorius Java

Privačios prieigos modifikatorius

Privačios prieigos modifikatorius nurodomas naudojant raktinį žodį privatus. Metodai arba duomenų nariai, paskelbti privačiais, yra prieinami tik toje klasėje, kurioje jie deklaruoti.

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

Išvestis
Alice  

Paaiškinimas: Tiesioginė prieiga prie vardo neleidžiama išoriniam asmeniui, vykdančiam inkapsuliavimą.

Numatytasis prieigos modifikatorius

Kai klasės metodui arba duomenų nariui nenurodytas prieigos modifikatorius, pagal numatytuosius nustatymus jis turi numatytąjį prieigos modifikatorių. Tai reiškia, kad jį gali pasiekti tik to paties paketo klasės.

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

Išvestis
Tesla  

Paaiškinimas: Nariai, turintys numatytąją prieigą, negali būti pasiekti iš klasių kitame pakete.

Geeks.java: Numatytoji klasė tame pačiame pakete

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

GeeksNew.java: Numatytoji klasė iš kito paketo (dėl kontrasto)

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

Paaiškinimas:  Šiame pavyzdyje programa parodys kompiliavimo laiko klaidą, kai bandysime pasiekti numatytąją modifikatoriaus klasę iš kito paketo.

Apsaugotos prieigos modifikatorius

Apsaugotas prieigos modifikatorius nurodomas naudojant raktinį žodį protected. Metodai arba duomenų nariai, paskelbti apsaugotais, yra prieinami tame pačiame pakete arba poklasiuose skirtinguose paketuose.

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

Išvestis
Access via subclass method: 100 0  

Paaiškinimas: greitis pasiekiamas naudojant poklasio metodus ir kitas tame pačiame pakete esančias klases, tačiau tiesioginė prieiga iš kito paketo (ne poklasio) nepavyks.

Viešosios prieigos modifikatorius

Viešosios prieigos modifikatorius nurodomas naudojant raktinį žodį public. Viešieji nariai pasiekiami iš bet kurios programos vietos. Viešųjų duomenų narių apimtis nėra ribojama.

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

Išvestis
15  

Paaiškinimas: add() yra visuotinai prieinamas dėl viešojo modifikatoriaus.

Aukščiausio lygio klasės arba sąsajos negali būti paskelbtos privačiomis, nes privatus reiškia „matomas tik įtraukiančioje klasėje“.

„Java“ prieigos modifikatorių palyginimo lentelė

ta pati_klasėPrieigos modifikatorius

Kada naudoti kiekvieną prieigos modifikatorių realaus pasaulio projektuose

  • Privatus: Idėja turėtų būti kuo labiau apribota prieiga, taigi privatus turėtų būti naudojamas kuo daugiau.
  • Numatytoji (Privatus paketas): dažnai naudojamas paketų apimties komunalinėse paslaugose arba pagalbinėse klasėse.
  • Apsaugota: Dažniausiai naudojamas paveldėjimu pagrįstuose projektuose, pvz., sistemos plėtiniuose.
  • Viešas : naudojama API galinių taškų paslaugų klasėms arba naudingumo metodams, bendrinamiems skirtingose ​​programos dalyse.


Sukurti viktoriną