In Java stehen vier Zugriffsmodifikatoren für Methoden zur Verfügung:
public
- Jede Klasse kann diese Methode verwenden.
protected
- Klassen in demselben Paket und Unterklassen in jedem Paket können diese Methode verwenden.
private
- Nur diese Klasse kann diese Methode verwenden.
no modifier
("package private") - Nur Klassen im selben Paket können diese Methode verwenden.
Was häufig vorkommt, ist, dass ich nützliche Methoden in einer Oberklasse haben möchte, die alle Unterklassen verwenden können. Es wäre jedoch für andere Klassen nicht sinnvoll, auf diese Methode zuzugreifen, und in gewissem Sinne würde die Kapselung unterbrochen.
Also muss ich diese nützlichen Methoden in der Superklasse public
oder deklarieren protected
, die sie allen anderen Klassen zumindest im Paket zur Verfügung stellt. Obwohl sie nur für die Unterklassen bestimmt sind.
Gibt es einen Grund, warum es subclasses-only
in Java keinen Zugriffsmodifikator gibt ? Es kommt mir sehr merkwürdig vor. Vermisse ich etwas?
Ein subclasses-only
Zugriffsmodifikator ist auch nützlich, wenn Sie Variablen nur für Unterklassen verfügbar machen möchten. Was mir oft passiert.