Modifikátory přístupu v Javě

Modifikátory přístupu v Javě

Modifikátory přístupu v Javě jsou základními nástroji, které definují, jak lze k členům třídy, jako jsou metody proměnných, a dokonce i ke třídě samotné přistupovat z jiných částí našeho programu.

V Javě jsou k dispozici 4 typy modifikátorů přístupu: 

Access-Modifiers-in-Java-1Modifikátory přístupu v Javě

Modifikátor soukromého přístupu

Modifikátor soukromého přístupu je určen pomocí klíčového slova private. Metody nebo datové členy deklarované jako soukromé jsou přístupné pouze v rámci třídy, ve které jsou deklarovány.

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

Výstup
Alice  

Vysvětlení: Přímý přístup ke jménu není povolen mimo Osoba prosazující zapouzdření.

Výchozí modifikátor přístupu

Není-li pro metodu třídy nebo datový člen zadán žádný modifikátor přístupu, říká se, že má ve výchozím nastavení výchozí modifikátor přístupu. To znamená, že k němu mají přístup pouze třídy v rámci stejného balíčku.

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

Výstup
Tesla  

Vysvětlení: Ke členům s výchozím přístupem nelze přistupovat z tříd v jiném balíčku.

Geeks.java: Výchozí třída ve stejném balíčku

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

GeeksNew.java: Výchozí třída z jiného balíčku (pro 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  ();         }      }   

Vysvětlení:  V tomto příkladu program zobrazí chybu při kompilaci, když se pokusíme získat přístup k výchozí třídě modifikátoru z jiného balíčku.

Modifikátor chráněného přístupu

Modifikátor chráněného přístupu se zadává pomocí klíčového slova protected. Metody nebo datové členy deklarované jako chráněné jsou přístupné v rámci stejného balíčku nebo podtříd v různých balíčcích.

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

Výstup
Access via subclass method: 100 0  

Vysvětlení: rychlost je přístupná prostřednictvím metod podtřídy a dalších tříd ve stejném balíčku, ale přímý přístup z jiného balíčku (nepodtřídy) by selhal.

Modifikátor veřejného přístupu

Modifikátor veřejného přístupu je specifikován pomocí klíčového slova public. Veřejní členové jsou přístupní odkudkoli v programu. Neexistuje žádné omezení rozsahu členů veřejných údajů.

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

Výstup
15  

Vysvětlení: add() je globálně přístupné díky modifikátoru public.

Třídy nebo rozhraní nejvyšší úrovně nelze deklarovat jako soukromé, protože soukromé znamená „viditelné pouze v rámci ohraničující třídy“.

Srovnávací tabulka přístupových modifikátorů v Javě

stejná_třídaAccess-Modifier

Kdy použít každý modifikátor přístupu v projektech reálného světa

  • soukromé: Myšlenkou by mělo být použití co nejomezujícího přístupu, takže soukromý by měl být používán co nejvíce.
  • Výchozí (Package-Private): Často se používá v obslužných programech s rozsahem balíčků nebo pomocných třídách.
  • Chráněný: Běžně se používá v návrzích založených na dědičnosti, jako jsou rozšíření rámců.
  • Veřejnost : Používá se pro třídy služeb koncových bodů API nebo obslužné metody sdílené v různých částech aplikace.


Vytvořit kvíz