Piekļūstiet modifikatoriem Java

Piekļūstiet modifikatoriem Java

Java piekļuves modifikatori ir būtiski rīki, kas nosaka, kā klases dalībniekiem, piemēram, mainīgo metodēm, un pat pašai klasei var piekļūt no citām mūsu programmas daļām.

Java ir pieejami 4 veidu piekļuves modifikatori: 

Access-Modifiers-in-Java-1Piekļūstiet modifikatoriem Java

Privātās piekļuves pārveidotājs

Privātās piekļuves pārveidotājs tiek norādīts, izmantojot atslēgvārdu privāts. Metodes vai datu dalībnieki, kas deklarēti kā privāti, ir pieejami tikai tajā klasē, kurā tie ir deklarēti.

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

Izvade
Alice  

Paskaidrojums: Tieša piekļuve vārdam nav atļauta ārpus personas, kas veic iekapsulēšanu.

Noklusējuma piekļuves pārveidotājs

Ja klases metodei vai datu dalībniekam nav norādīts piekļuves pārveidotājs, tiek uzskatīts, ka pēc noklusējuma tam ir noklusējuma piekļuves modifikators. Tas nozīmē, ka tai var piekļūt tikai klases vienā pakotnē.

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

Izvade
Tesla  

Paskaidrojums: Dalībniekiem ar noklusējuma piekļuvi nevar piekļūt no klasēm citā pakotnē.

Geeks.java: Noklusējuma klase tajā pašā pakotnē

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

GeeksNew.java: Noklusējuma klase no citas pakotnes (kontrastam)

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

Paskaidrojums:  Šajā piemērā programma parādīs kompilēšanas laika kļūdu, kad mēģināsim piekļūt noklusējuma modifikatoru klasei no citas pakotnes.

Aizsargātas piekļuves pārveidotājs

Aizsargātās piekļuves modifikators tiek norādīts, izmantojot atslēgvārdu aizsargāts. Metodes vai datu dalībnieki, kas deklarēti kā aizsargāti, ir pieejami vienā un tajā pašā pakotnē vai apakšklasēs dažādās pakotnēs.

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

Izvade
Access via subclass method: 100 0  

Paskaidrojums: ātrums ir pieejams, izmantojot apakšklases metodes un citas klases tajā pašā pakotnē, bet tieša piekļuve no citas pakotnes (kas nav apakšklase) neizdosies.

Publiskās piekļuves pārveidotājs

Publiskās piekļuves modifikators tiek norādīts, izmantojot atslēgvārdu public. Publiskie dalībnieki ir pieejami no jebkuras programmas vietas. Publisko datu dalībnieku lokam nav ierobežojumu.

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

Izvade
15  

Paskaidrojums: add() ir globāli pieejams publiskā modifikatora dēļ.

Augstākā līmeņa klases vai saskarnes nevar deklarēt kā privātas, jo privātais nozīmē “redzamas tikai aptverošajā klasē”.

Java piekļuves modifikatoru salīdzināšanas tabula

vienāda_klasePiekļuves pārveidotājs

Kad izmantot katru piekļuves pārveidotāju reālās pasaules projektos

  • Privāts: Idejai vajadzētu izmantot pēc iespējas ierobežotāku piekļuvi, lai pēc iespējas vairāk izmantotu privāto piekļuvi.
  • Noklusējums (Package-Private): bieži izmanto pakotnes tvēruma utilītprogrammās vai palīgu klasēs.
  • Aizsargāts: Parasti izmanto uz mantošanu balstītos dizainos, piemēram, ietvara paplašinājumos.
  • Publisks : tiek izmantots API galapunktu pakalpojumu klasēm vai utilītas metodēm, kas tiek koplietotas dažādās lietojumprogrammas daļās.


Izveidojiet viktorīnu