Skip to main content

Zugriffsmodifikatoren

Mit Packages stellt uns Java ein Werkzeug zur Verfügung um Klassen in zusammengehörende Einheiten zu gruppieren. Das zweite wichtige Prinzip, welches wir diese Woche kennengelernt haben ist Information hiding. Auch dafür bietet Java, mit den sogenannten Zugriffsmodifikatoren, eine Lösung an.

Zugriffsmodifikatoren für Klassen

Für Klassen gibt es die Zugriffsmodifikatoren public und default. Um eine Klasse als public zu deklarieren schreiben wir einfach das Schlüsselwort public vor die Klasse:

public class AClass {}

Wenn der Zugriffsmodifikator weggelassen wird, dann treten die Regeln für den default Zugriffsmodifikator ein.

Die Zugriffsmodifikatoren bestimmen, aus welchen anderen Teilen eines Programms, auf die Klassen zugegriffen werden kann. Für Klassen haben wir folgende Sichtbarkeitsregeln:

ZugriffsmodifikatorSichtbarkeit
publicDer Zugriff ist aus Klassen im Programm möglich.
defaultDer Zugriff ist nur aus Klassen im selben Package möglich.

Wir deklarieren nur die wichtigen Klassen, die von aussen Sichtbar sein sollen als public. Alle anderen Klassen, die nur der internen Implementation der Logik dienen, sind so vor den Benutzern versteckt. Damit kommunizieren wir, welche Klassen für die Benutzung dieses des Package wichtig sind, und welche nicht direkt benutzt werden sollen. Dies hält uns zudem die Möglichkeit offen, die nicht zugreifbaren Klassen auszutauschen, ohne, dass diese Änderung in anderen Programmteilen Auswirkungen hat.

Zugriffsmodifikatoren für Felder und Methoden

Neben Zugriffsmodifikatoren für Klassen bietet Java auch Zugriffsmodifikatoren für Felder und Methoden. Hier haben wir eine noch feinere Unterscheidung. Wir können die Sichtbarkeit von Methoden und Felder mittels den Schlüsselwörter private, protected oder public einschränken. Auch hier gelten wieder default-Regeln, wenn wir nichts angeben wurde.

ZugriffsmodifikatorSichtbarkeit
publicDer Zugriff ist aus allen Methoden möglich.
protectedDer Zugriff ist nur aus Methoden von Klassen aus demselben Package und aus Subklassen möglich.
defaultDer Zugriff ist nur aus Methoden von Klassen aus demselben Package möglich.
privateDer Zugriff ist nur aus Methoden von derselben Klasse möglich.

Ein typisches Muster in der Objektorientierung ist es, die Felder alle als private zu deklarieren. Der Zugriff von Aussen wird nur über Methoden gewährt. Die Idee dahinter ist, dass die Datenrepräsentation ein internes Detail ist und sich häufig ändern kann. Im Gegensatz dazu wird das Verhalten, welches über die Methoden definiert ist, stabiler bleiben und sich weniger häufig ändern.

Wie die Zugriffsmodifikatoren genau funktionieren wird in folgendem Video noch praktisch veranschaulicht.


Haben Sie Fragen oder Bemerkungen? Schreiben Sie diese doch ins Forum.