Modifikatori pristupa u Javi

Modifikatori pristupa u Javi

U Javi su modifikatori pristupa osnovni alati koji definiraju kako se članovima klase poput metoda varijabli, pa čak i samoj klasi, može pristupiti iz drugih dijelova našeg programa.

U Javi su dostupne 4 vrste modifikatora pristupa: 

Modifikatori pristupa-u-Javi-1Modifikatori pristupa u Javi

Modifikator privatnog pristupa

Modifikator privatnog pristupa naveden je pomoću ključne riječi private. Metode ili članovi podataka deklarirani kao privatni dostupni su samo unutar klase u kojoj su 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  ());      }   }   

Izlaz
Alice  

Obrazloženje: Izravan pristup imenu nije dopušten izvan Osobe koja provodi enkapsulaciju.

Zadani modifikator pristupa

Kada za metodu klase ili podatkovni član nije naveden modifikator pristupa, kaže se da ima zadani modifikator pristupa prema zadanim postavkama. To znači da mu mogu pristupiti samo klase unutar istog 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  );      }   }   

Izlaz
Tesla  

Obrazloženje: Članovima sa zadanim pristupom ne može se pristupiti iz razreda u drugom paketu.

Geeks.java: Zadana klasa unutar istog paketa

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

GeeksNew.java: Zadana klasa iz drugog 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  ();         }      }   

Obrazloženje:  U ovom primjeru program će prikazati pogrešku tijekom kompajliranja kada pokušamo pristupiti zadanoj klasi modifikatora iz drugog paketa.

Modifikator zaštićenog pristupa

Modifikator zaštićenog pristupa naveden je pomoću ključne riječi protected. Metode ili članovi podataka deklarirani kao zaštićeni dostupni su unutar istog paketa ili podklasa u različitim paketima.

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

Izlaz
Access via subclass method: 100 0  

Obrazloženje: brzina je dostupna putem metoda potklase i drugih klasa u istom paketu, ali izravni pristup iz drugog paketa (koji nije podklasa) ne bi uspio.

Modifikator javnog pristupa

Modifikator javnog pristupa naveden je pomoću ključne riječi public. Javnim članovima se može pristupiti s bilo kojeg mjesta u programu. Ne postoji ograničenje opsega javnih podataka članova.

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

Izlaz
15  

Obrazloženje: add() je globalno dostupan zahvaljujući javnom modifikatoru.

Klase ili sučelja najviše razine ne mogu se deklarirati kao privatni jer privatno znači 'vidljivo samo unutar klase koja ga okružuje'.

Tablica usporedbe modifikatora pristupa u Javi

ista_klasaModifikator pristupa

Kada koristiti svaki modifikator pristupa u projektima iz stvarnog svijeta

  • Privatno: Ideja bi trebala biti korištenje što restriktivnijeg pristupa, tako da se privatno treba koristiti što je više moguće.
  • Zadano (Paket-Privatno): Često se koristi u pomoćnim programima ili pomoćnim klasama u opsegu paketa.
  • Zaštićen: Obično se koristi u dizajnu temeljenom na nasljeđivanju kao što su proširenja okvira.
  • Javnost : Ovo se koristi za klase usluga krajnjih točaka API-ja ili pomoćne metode koje se dijele u različitim dijelovima aplikacije.


Napravi kviz