4.5.5 | Modifier für Klassen |
Modifier sind Schlüsselwörter, die einer Vereinbarung einer Klasse, eines Datenelements oder eines Interface vorangestellt werden können. Sie verändern die Eigenschaften des Gegenstands der Vereinbarung. So kann beispielsweise ein Datenelement als konstant definiert oder aber eine Klasse als abstrakt gekennzeichnet werden. Eine Klasse kann mit den folgenden Modifiern versehen werden:Eine Klasse darf nicht gleichzeitig als abstract und final deklariert werden.
abstract Abstrakte Klassen dienen dazu, lediglich eine Klassenstruktur festzulegen, ohne die komplette Implementierung vorzugeben. Von einer abstrakten Klasse darf kein Exemplar erzeugt werden. Von ihr muss erst eine Unterklasse abgeleitet werden, die die Methoden der abstrakten Klasse implementiert. Sobald eine Klasse auch nur eine Methode besitzt, die als abstract vereinbart ist, muss sie ebenfalls als abstract deklariert werden. final Von Klassen, die mit final gekennzeichnet werden, können keine Unterklassen abgeleitet werden. Entsprechend können die Methoden auch nicht überschrieben werden. Dies kann in Fällen sinnvoll sein, in denen verhindert werden soll, dass Unterklassen definiert werden, beispielsweise, wenn andere Klassen Annahmen über ein ganz bestimmtes Verhalten der Implementierung der Klasse voraussetzen. strictfp Durch die Angabe von strictfp wird in allen Methoden der Klasse standardmäßig die erweiterte Gleitpunktdarstellung deaktiviert. Dies ist in Klassen hilfreich, bei denen es darauf ankommt, dass die Gleitpunktoperationen auf allen Plattformen exakt das gleiche Ergebnis liefern.
Ein Beispiel für die Verwendung von abstract wäre eine Klasse für verschiedene grafische Datenelemente am Bildschirm. Diese Objekte sollen sich sichtbar und unsichtbar machen können. Wie sie das tun, ist bei der Konzeption irrelevant. Dennoch kann man bereits bei der abstrakten Konzeption annehmen, dass sich das Verschieben eines solchen Objekts aus den Operationen »unsichtbar machen«, »verschieben des Bezugspunkts« und dem wieder »sichtbar machen« besteht.public abstract class GraphObj { int x, y; public abstract void hide(); public abstract void show(); public void moveTo(int x, int y) { hide(); this.x = x; this.y = y; show(); } }Wenn nun ein bestimmtes grafisches Objekt, beispielsweise ein Kreis von GraphObj abgeleitet werden soll, dann muss diese Unterklasse alle abstrakten Methoden überschreiben.
Darüber hinaus gibt es noch Modifier, die die Zugriffsrechte auf eine Klasse festlegen. Sie werden im Abschnitt 4.10.1 beschrieben.