Sichtbarkeit von Klassen, Methoden und Feldern
Die Sichtbarkeit behandelt die Frage, welche Methoden und Felder von Objekten für andere Objekte verfügbar sind.
Sichtbar bedeutet hier, dass Methoden aufgerufen und Felder gelesen oder gesetzt werden können. Damit lässt sich bestimmen, wie das „Gesicht" von Klassen nach aussen – für andere Klassen – erscheint. Die Sichtbarkeit ist ein weiteres zentrales Thema der objektorientierten Programmierung, die es ermöglicht, ein flexibles und gut wartbares Softwaredesign zu verwirklichen.
Die Sichtbarkeit ist keineswegs ein akademisches Konzept, das uns echten Programmierern völlig egal sein könnte. Vielmehr sollten Sie stets daran denken, dass jede öffentliche Methode ein Versprechen an alle anderen Klassen (und ggf. deren Programmierer) darstellt, eine bestimmte Funktionalität zur Verfügung zu stellen. Außerdem sind Klassen einfacher zu benutzen, wenn nur bestimmt Methoden sichtbar sind.
In Java gibt es vier Stufen von Sichtbarkeit:
- „private": Methoden, Felder und Klassen, die private sind, sind nur innerhalb der Klasse sichtbar, in der sie definiert sind. Sie sind das Mittel der Wahl für Felder und Methoden, die nur intern benutzt werden sollen. Innere Klassen können auf „private" Felder und Methoden der umgebenden Klasse zugreifen.
- „protected": Methoden, Felder und Klassen sind in der sie definierenden Klasse sowie allen davon abgeleiteten Klassen sichtbar. Entsprechend wird „protected" bewusst da verwenden, wo die Verwendung in abgeleiteten Klassen vorgesehen ist.
- „ ": Modifier fehlt (= „Package private"). Diese Elemente sind innerhalb des Paketes sichtbar, in dem die Klasse steht, in der sie definiert wurden. Für Klassen aus anderen Paketen sind sie nicht sichtbar. Bietet sich für Klassen und Methoden an, die nur von Klassen im selben Package sinnvoll verwendet werden können.
- „public": Elemente sind für alle anderen Klassen sichtbar. Sie sind öffentlich und für alle anderen Klassen zu erreichen.
Bezeichnen Sie Felder grundsätzlich mit „private", ausser es gibt einen konkreten Grund für einen anderen Modifier. Alle„public" Methoden einer Klasse stellen ihr sogenanntes „Interface" dar– das hat nicht mit dem Java- Schlüsselwort „Interface" zu tun,sondern meint die Schnittstellen der Klasse für andere Klassen. Achten Sie darauf, das dieses Interface logisch, vollständig und leicht zu verstehen ist.