Zugriffsstufenmodifikatoren bestimmen, ob andere Klassen ein bestimmtes Feld verwenden oder eine bestimmte Methode aufrufen können. Es gibt zwei Ebenen der Zugriffskontrolle:
- Auf der obersten Ebene –
public
oder package-private (kein expliziter Modifikator). - Auf der Mitgliederebene –
public
,private
,protected
oder package-private (kein expliziter Modifikator).,
Eine Klasse kann mit dem Modifikator public
deklariert werden, in diesem Fall ist diese Klasse für alle Klassen überall sichtbar. Wenn eine Klasse keinen Modifikator hat (der Standardwert, auch als paketprivat bezeichnet), ist sie nur innerhalb ihres eigenen Pakets sichtbar (Pakete werden Gruppen verwandter Klassen genannt-Sie erfahren dies in einer späteren Lektion.)
Auf der Mitgliederebene können Sie auch den Modifikator public
oder keinen Modifikator (package-private) verwenden, genau wie bei Klassen der obersten Ebene und mit der gleichen Bedeutung., Für Mitglieder gibt es zwei zusätzliche Zugriffsmodifikatoren: private
und protected
. Der Modifikator private
gibt an, dass auf das Element nur in seiner eigenen Klasse zugegriffen werden kann. Der Modifikator protected
gibt an, dass auf das Element nur innerhalb seines eigenen Pakets (wie bei package-private) und zusätzlich durch eine Unterklasse seiner Klasse in einem anderen Paket zugegriffen werden kann.
Die folgende Tabelle zeigt den von jedem Modifikator zulässigen Zugriff auf Mitglieder.,Modifier
public
protected
private
The first data column indicates whether the class itself has access to the member defined by the access level., Wie Sie sehen, hat eine Klasse immer Zugriff auf ihre eigenen Mitglieder. Die zweite Spalte gibt an, ob Klassen im selben Paket wie die Klasse (unabhängig von ihrer Abstammung) Zugriff auf das Mitglied haben. Die dritte Spalte gibt an, ob Unterklassen der außerhalb dieses Pakets deklarierten Klasse Zugriff auf das Mitglied haben. Die vierte Spalte gibt an, ob alle Klassen Zugriff auf das Mitglied haben.
Zugriffsstufen beeinflussen Sie auf zwei Arten., Wenn Sie Klassen verwenden, die aus einer anderen Quelle stammen, z. B. Klassen in der Java-Plattform, bestimmen Zugriffsebenen zunächst, welche Mitglieder dieser Klassen Ihre eigenen Klassen verwenden können. Zweitens müssen Sie beim Schreiben einer Klasse entscheiden, welche Zugriffsebene jede Mitgliedsvariable und jede Methode in Ihrer Klasse haben soll.
Schauen wir uns eine Sammlung von Klassen an und sehen, wie sich Zugriffsebenen auf die Sichtbarkeit auswirken. Die folgende Abbildung zeigt die vier Klassen in diesem Beispiel und wie Sie zusammenhängen.,
Klassen und Pakete des Beispiels zur Veranschaulichung der Zugriffsebenen
Die folgende Tabelle zeigt, wo die Mitglieder der Alpha-Klasse für jeden der Zugriffsmodifikatoren sichtbar sind, die auf sie angewendet werden können.,ha
public
protected
private
If other programmers use your class, you want to ensure that errors from misuse cannot happen., Zugriffsebenen können Ihnen dabei helfen.
- Verwenden Sie die restriktivste Zugriffsebene, die für ein bestimmtes Mitglied sinnvoll ist. Verwenden Sie
private
, es sei denn, Sie haben einen guten Grund, dies nicht zu tun. - Vermeiden Sie
public
Felder mit Ausnahme von Konstanten. (Viele der Beispiele im Tutorial verwenden öffentliche Felder. Dies kann helfen, einige Punkte prägnant zu veranschaulichen, wird jedoch für den Produktionscode nicht empfohlen.) Öffentliche Felder neigen dazu, Sie mit einer bestimmten Implementierung zu verknüpfen und Ihre Flexibilität bei der Änderung Ihres Codes einzuschränken.