Модификатори приступа у Јави

Модификатори приступа у Јави

У Јави модификатори приступа су есенцијални алати који дефинишу како члановима класе попут метода променљивих, па чак и самој класи може да се приступи из других делова нашег програма.

Постоје 4 типа модификатора приступа доступних у Јави: 

Аццесс-Модифиерс-ин-Јава-1Модификатори приступа у Јави

Модификатор приватног приступа

Модификатор приватног приступа је специфициран помоћу кључне речи привате. Методе или чланови података декларисани као приватни су доступни само унутар класе у којој су декларисани.

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

Излаз
Alice  

Објашњење: Директан приступ имену није дозвољен изван особе која спроводи енкапсулацију.

Подразумевани модификатор приступа

Када модификатор приступа није наведен за метод класе или члана података, каже се да подразумевано има подразумевани модификатор приступа. То значи да само класе унутар истог пакета могу да му приступе.

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

Излаз
Tesla  

Објашњење: Члановима са подразумеваним приступом не може се приступити из класа у другом пакету.

Геекс.јава: Подразумевана класа у оквиру истог пакета

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

ГеексНев.јава: Подразумевана класа из другог пакета (за контраст)

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

Објашњење:  У овом примеру програм ће показати грешку у времену компајлирања када покушамо да приступимо подразумеваној класи модификатора из другог пакета.

Модификатор заштићеног приступа

Модификатор заштићеног приступа је специфициран помоћу кључне речи протецтед. Методе или чланови података декларисани као заштићени су доступни у оквиру истог пакета или подкласа у различитим пакетима.

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

Излаз
Access via subclass method: 100 0  

Објашњење: брзина је доступна преко метода поткласе и других класа у истом пакету, али директан приступ из другог пакета (не-подкласе) не би успео.

Модификатор јавног приступа

Модификатор јавног приступа је специфициран помоћу кључне речи публиц. Јавни чланови су доступни са свих страна у програму. Нема ограничења у погледу обима јавних података чланова.

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

Излаз
15  

Објашњење: адд() је глобално доступан због модификатора публиц.

Класе или интерфејси највишег нивоа се не могу декларисати као приватне јер приватно значи 'видљиво само у оквиру класе која га окружује'.

Табела поређења модификатора приступа у Јави

иста_класаМодификатор приступа

Када користити сваки модификатор приступа у пројектима из стварног света

  • Приватно: Идеја би требало да буде што је могуће рестриктивнији приступ, тако да приватни треба да се користи што је више могуће.
  • Подразумевано (Пацкаге-Привате): Често се користи у услужним програмима у оквиру пакета или помоћним класама.
  • Заштићено: Обично се користи у дизајнима заснованим на наслеђивању као што су проширења оквира.
  • Јавно : Ово се користи за класе услуга крајњих тачака АПИ-ја или услужне методе које се деле у различитим деловима апликације.


Креирај квиз