12 Java – Modifizierer und Zugriffsrechte
In Java sind Modifizierer (engl. modifiers) Schlüsselwörter, die die Eigenschaften von Klassen, Methoden, Variablen und anderen Elementen ändern. Sie beeinflussen den Zugriff, das Verhalten und die Lebensdauer dieser Elemente. Es kann zwischen 6 Kategorien von Modifizieren unterschieden werden.
Klassenmodifizierer
Feldmodifizierer
Methodenmodifizierer
Interface-Modifizierer
Konstruktormodifizierer
Zugriffsmodifizierer
Ob auf Klassen, Schnittstellen, Methoden etc. zugegriffen werden kann, wird über die Access Modifier gesteuert. Sie können auf fast allen Konstrukten wie Klassen, Interfaces, Variablen etc. angewendet werden. Die folgenden vier Access Modifier werden verwendet.
public
private
protected
package-private
Klassenmodifizierer
Klassen können die folgenden Modifier verwenden.
abstract
sealed
(Seit Java 17)non-sealed
(Seit Java 17)permits
(Seit Java 17)final
strictfp
(Seit Java 17 redundant)static
Feldmodifizierer
Klassen- und Objektvariablen können die folgenden Modifier verwenden.
static
final
transient
volatile
Methodenmodifizierer
Methoden können die folgenden Modifier verwenden.
abstract
static
final
native
strictfp
(Seit Java 17 redundant)synchronized
Interface-Modifizierer
Interfaces können die folgenden Modifier verwenden.
abstract
(Explizite Angabe redundant, da Methoden intern abstrakt sind)strictfp
(Seit Java 17 redundant)static
sealed
(Seit Java 17)non-sealed
(Seit Java 17)
Konstruktormodifizierer
Mit Ausnahme der Access Modifier verwenden Konstruktoren keine zusätzlichen Modifier.
Modifier
Folgende Tabelle wurde bereits in Kapitel 1 – Token: Modifier gezeigt.
Keyword | Anwendungsbereich | Beschreibung |
---|---|---|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| ||
|
|
sealed
, non-sealed
& permits
Seit Java 17 gibt es die Modifier sealed
, non-sealed
und permits
. Obwohl auch diese häufig als Keywords bezeichnet werden, ist es zumindest bei sealed
und permits
möglich, diese als Identifier zu nutzen. Da non-sealed
einen Operator enthält, funktioniert dies nicht bei diesem Modifier.
Die Keywords dienen dazu Klassen und Interfaces zu versiegeln und somit die Erweiterbarkeit (Vererbung) einer Klassenhierarchie einzuschränken. Mehr dazu in Kapitel 14 – OOP: Versiegelte Klassen und Interfaces.