Arbeiten mit .NET: Materialien/ Programmierkurs C-Sharp: Zugriffsmodifikatoren
Zugriffsmodifikatoren
BearbeitenZugriffsmodifikatoren regeln den Zugriff auf Klassen und deren Mitglieder (Eigenschaften, Variablen, Felder, Ereignisse, usw.). Die folgende Tabelle führt die unterstützten Zugriffsmodifikatoren auf und beschreibt deren Wirkung und den Sichtbarkeitskontext.
Name | Wirkung |
---|---|
internal |
internal beschränkt den Zugriff auf Klassen und deren Mitglieder auf eine Assembly. Im einfachsten Falle ist das die aktuelle Klasse (sofern kein Namensraum (namespace) definiert wurde), andernfalls ist der Zugriff auf den aktuellen Namensraum und dessen Mitglieder beschränkt (unter Java entspricht das der Beschränkung auf ein package). |
private |
Beschränkt den Zugriff auf eine Klasse und deren Mitglieder. Eine mit private deklarierte Klasse kann nur innerhalb der Klasse selbst instanziert werden. (Beispielsweise kann ein öffentlicher Konstruktor einer Klasse oder die statische Funktion Main einen privaten Konstruktor aufrufen, der nicht von außen aufgerufen werden kann.) Eine abgeleitete Klasse kann auf private Mitglieder der Basisklasse ebenfalls nicht zugreifen. Soll ein solcher Zugriff möglich sein, so muss der Zugriffsmodifizierer protected verwendet werden. |
protected |
Dieser Modifikator ist mit dem Modifikator private identisch bis auf einen Unterschied. Sofern es sich nicht um eine versiegelte Klasse handelt, können auch abgeleitete Klassen auf die Mitglieder einer Basisklasse zugreifen oder diese überschreiben. Ansonsten ist die Sichtbarkeit auf die Klasse selbst beschränkt. |
public |
Auf als public gekennzeichnete Klasse oder Klassenmitglieder kann unbeschränkt zugegriffen werden. Sie werden deshalb auch als "öffentlich" bezeichnet. Eine Klasse, die eine statische Funktion enthält (z.B. Main), muss immer als public deklariert werden, da sonst kein Zugriff möglich ist und es zu einem Fehler kommt. |
Hinweise:
- Per Voreinstellung sind Klassenmitglieder (Funktionen, Eigenschaften usw.), denen kein Zugriffsmodifikator zugewiesen wurde, automatisch als private deklariert. Klassen selbst dagegen besitzen automatisch den Modifikator internal und sind nur im aktuellen Namensraum (namespace) sichtbar. Wurde kein Namensraum zugewiesen, so gilt der so genannte globale Deklarationsraum als Standardnamensraum.
- Die Modifikatoren können bis auf protected und internal nicht miteinander kombiniert werden. protected internal spielt im Zusammenhang mit der Vererbung von Komponenten eine Rolle. Die Sichtbarkeit der Basisklasse wird von der abgeleiteten Klasse übernommen.
- Schnittstellen sind immer öffentlich definiert. Die Zuordnung eines Zugriffsmodifikators (mit Ausnahme von public) ist nicht zulässig.