Sichtbarkeit (auch Zugriffskontrolle) regelt, wer auf Felder und Methoden einer Klasse zugreifen darf. Die wichtigsten Zugriffsmodifikatoren sind public, private und protected. Sichtbarkeit ist das Werkzeug, mit dem die Objektorientierung ihre Ziele Kapselung und Informationsversteckung durchsetzt.
Die drei Grundmodifikatoren
| Modifikator | Zugriff | Typische Verwendung |
|---|---|---|
public | Für alle Code-Stellen | Öffentliche API, Interface-Methoden |
private | Nur innerhalb der Klasse | Interner Zustand, Hilfsmethoden |
protected | Klasse + Subklassen (je nach Sprache auch Paket) | Für die Vererbung gedachte Details |
Beispiel in Java:
public class Konto {
private double kontostand; // nur diese Klasse
protected long id; // Klasse + Subklassen
public double getKontostand() { return kontostand; }
}
Die Instanzvariable kontostand ist privat; nach außen geht nur der Getter.
Sprachunterschiede
- Java: Ohne Modifikator gilt package-private (Zugriff im selben Paket).
protectederlaubt Zugriff im Paket und in Subklassen. - C++: Mitglieder von
classsind standardmäßigprivate, Mitglieder vonstructstandardmäßigpublic.protectedgilt für die Klasse und abgeleitete Klassen. - C#: zusätzlich
internalfür den Zugriff innerhalb der Assembly. - Python: Es gibt keine harten Modifikatoren. Konvention:
_namebedeutet geschützt,__namewird per Name-Mangling praktisch privat. Die Community vertraut auf Disziplin.
Warum Sichtbarkeit wichtig ist
Private Felder verhindern, dass außenstehender Code den Zustand eines Objekts in einen ungültigen Zustand bringt. Die öffentlichen Methoden bilden den Vertrag; intern darf sich die Implementierung ändern, ohne Nutzer zu brechen — das ist Informationsversteckung, ein Kern der Abstraktion.
Interfaces sind von Natur aus public: Sie legen fest, welche Methoden ein Objekt nach außen anbietet. Overriding in Subklassen kann die Sichtbarkeit nicht einschränken — eine öffentliche Methode darf in der Subklasse nicht privat werden.
Zusammen mit Klassenvariablen gilt: Auch statische Felder sollten private sein und nur über Methoden exponiert werden.