Kleines Nachschlagewerk Informatik
Sichtbarkeit
Sichtbarkeit
Sichtbarkeiten geben an, wer was von einem Objekt sehen bzw. benutzen darf.
private
Private bedeutet, dass diese Attribute bzw. Methoden nur von dieser Klasse benutzt werden dürfen. Allerdings haben andere Objekte der gleichen Klasse innerhalb einer Methode der Klasse Zugriff.

Normalerweise werden nur Attribute und kleinere Hilfsmethoden private gekennzeichnet.

In UML-Diagrammen wird dies mit einem Minuszeichen gekennzeichnet.





Im (Java-) Quelltext schreibt man private vor das Element.

      public class Auto {
          private int tank = 0;
          ...
      }
            
protected
Protected unterscheidet sich von private dadurch, dass auch Subklassen Zugriff haben. Typischerweise setzt man alle wichtigen Attribute auf protected.





In UML kennzeichnet man dies mit einem Doppelkreuz, in Java mit mit protected.

      public class Auto {
          protected int tank = 0;
          ...
      }
            
public
Auf public-Attribute und Methoden dürfen alle anderen Objekte - gleich von welcher Klasse sie erzeugt wurden - zugreifen. Üblicherweise macht man nur die Methoden public, die von anderen Objekten zur Kommunikation gebraucht werden. Attribute sind nur in Ausnahmefällen public.





Öffentliche Elemente kennzeichnet man mit einem Plus in UML, in Java schreibt man public.

      public class Auto {
          ...
          public void fahre()
          {
              ...
          }
          ...
      }
            
package
Etwas aus dem Rahmen fällt die Paketsichtbarkeit. Mehrere Klassen, die zusammen gehören, bilden ein Paket. Methoden und Attribute mit dieser Sichtbarkeit sind für alle Objekte, die von Klassen des Pakets erzeugt wurden, sichtbar und benutzbar.

Gekennzeichnet wird dies in UML mit einer Tilde, in Java ist dies (bedauerlicherweise) die Voreinstellung. Der Bezeichner wird hier einfach weggelassen.

      public class Auto {
          int einProtectedAttribut;
          ...
      }
            
Da auch mehrere Programmierer an einem Paket arbeiten, sollte man auf Paketsichtbarkeit verzichten.
Vergleich Java / UML
SichtbarkeitUMLJava
privatenur diese Klassenur diese Klasse
protecteddiese Klasse und Subklassendiese Klasse, Subklassen und Paket
publicalle Klassenalle Klassen
packagealle Klassen des Paketsalle Klassen des Pakets