Zugriffsmodifikatoren in Java

Zugriffsmodifikatoren in Java

In Java sind Zugriffsmodifikatoren wesentliche Werkzeuge, die definieren, wie von anderen Teilen unseres Programms aus auf die Mitglieder einer Klasse wie Variablen, Methoden und sogar auf die Klasse selbst zugegriffen werden kann.

In Java stehen vier Arten von Zugriffsmodifikatoren zur Verfügung: 

Zugriffsmodifikatoren-in-Java-1Zugriffsmodifikatoren in Java

Modifikator für privaten Zugriff

Der private Zugriffsmodifikator wird mit dem Schlüsselwort private angegeben. Auf die als privat deklarierten Methoden oder Datenelemente kann nur innerhalb der Klasse zugegriffen werden, in der sie deklariert sind.

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

Ausgabe
Alice  

Erläuterung: Der direkte Zugriff auf den Namen ist außerhalb der Person, die die Kapselung erzwingt, nicht gestattet.

Standardzugriffsmodifikator

Wenn für eine Klassenmethode oder ein Datenelement kein Zugriffsmodifikator angegeben ist, wird davon ausgegangen, dass sie standardmäßig über den Standardzugriffsmodifikator verfügt. Das bedeutet, dass nur Klassen innerhalb desselben Pakets darauf zugreifen können.

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

Ausgabe
Tesla  

Erläuterung: Auf Mitglieder mit Standardzugriff kann nicht von Klassen in einem anderen Paket aus zugegriffen werden.

Geeks.java: Standardklasse innerhalb desselben Pakets

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

GeeksNew.java: Standardklasse aus einem anderen Paket (als 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  ();         }      }   

Erläuterung:  In diesem Beispiel zeigt das Programm den Kompilierzeitfehler an, wenn wir versuchen, aus einem anderen Paket auf eine Standardmodifikatorklasse zuzugreifen.

Modifikator für geschützten Zugriff

Der geschützte Zugriffsmodifikator wird mit dem Schlüsselwort protected angegeben. Auf die als geschützt deklarierten Methoden oder Datenelemente kann innerhalb desselben Pakets oder in Unterklassen in verschiedenen Paketen zugegriffen werden.

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

Ausgabe
Access via subclass method: 100 0  

Erläuterung: Auf Geschwindigkeit kann über Unterklassenmethoden und andere Klassen im selben Paket zugegriffen werden, der direkte Zugriff von einem anderen Paket (nicht Unterklasse) würde jedoch fehlschlagen.

Modifikator für den öffentlichen Zugriff

Der öffentliche Zugriffsmodifikator wird mit dem Schlüsselwort public angegeben. Öffentliche Mitglieder sind von überall im Programm aus zugänglich. Es gibt keine Einschränkung hinsichtlich des Umfangs öffentlicher Datenelemente.

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

Ausgabe
15  

Erläuterung: add() ist aufgrund des öffentlichen Modifikators global zugänglich.

Klassen oder Schnittstellen der obersten Ebene können nicht als privat deklariert werden, da privat „nur innerhalb der umschließenden Klasse sichtbar“ bedeutet.

Vergleichstabelle der Zugriffsmodifikatoren in Java

gleiche_klasseZugriffsmodifikator

Wann die einzelnen Zugriffsmodifikatoren in realen Projekten verwendet werden sollten

  • Privat: Die Idee sollte darin bestehen, den Zugriff so restriktiv wie möglich zu gestalten, sodass der private Zugriff so weit wie möglich erfolgen sollte.
  • Standard (Paketprivat): Wird häufig in paketbezogenen Dienstprogrammen oder Hilfsklassen verwendet.
  • Geschützt: Wird häufig in vererbungsbasierten Designs wie Framework-Erweiterungen verwendet.
  • Öffentlich : Dies wird für API-Endpunkt-Dienstklassen oder Dienstprogrammmethoden verwendet, die in verschiedenen Teilen einer Anwendung gemeinsam genutzt werden.


Quiz erstellen