12 Java – Modifizierer und Zugriffsrechte
In Java sind Modifizierer (eng. modifiers) Schlüsselwörter, welche Eigenschaften von Klassen, Methoden, Variablen und anderen Elementen verändern. Sie beeinflussen den Zugriff, das Verhalten und die Lebensdauer dieser Elemente. Es kann zwischen 6 Kategorien von Modifizierern unterschieden werden.
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 (außer lokale und Parametervariablen) etc. angewendet werden. Die folgenden vier Access Modifier werden verwendet.
publicprivateprotectedpackage-private
Klassenmodifizierer
Klassen können die folgenden Modifier verwenden.
abstractsealed(Seit Java 17)non-sealed(Seit Java 17)permits(Seit Java 17)finalstrictfp(Seit Java 17 redundant)static
Feldmodifizierer
Klassen- und Objektvariablen können die folgenden Modifier verwenden.
staticfinaltransientvolatile
Methodenmodifizierer
Methoden können die folgenden Modifier verwenden.
abstractstaticfinalnativestrictfp(Seit Java 17 redundant)synchronized
Interface-Modifizierer
Interfaces können die folgenden Modifier verwenden.
abstract(Explizite Angabe ist redundant, da Methoden intern abstrakt sind und kann daher weggelassen werden.)strictfp(Seit Java 17 redundant)staticsealed(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 und 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.