Java Reference
In-Depth Information
Für das Ergebnis der Multiplikation wird nun ein neues Objekt erstellt. Die als Operan-
den verwendeten Brüche werden durch die Multiplikationsmethode nicht verändert.
Verwenden Sie
final
als Modifier, dann sind einige bereits erstellte Methoden der
Klasse
Bruch
nicht mehr verwendbar und müssen gelöscht oder auskommentiert wer-
den. Es handelt sich dabei um all die Methoden, die nach der Erzeugung und Initialisie-
rung versuchen, die Werte von Zähler oder Nenner zu verändern. Das bedeutet, dass ein
Bruch z. B. nicht mehr gekürzt oder erweitert werden kann. Das kann aber eigentlich
nicht sinnvoll sein.
7
Der Modifier
final
eignet sich also nur für Attribute, deren Wert tatsächlich nie mehr
verändert werden sollen. Solche Attribute können konstante Werte wie z. B. die Kreis-
zahl Pi oder die Lichtgeschwindigkeit sein.
7.2.2
Datenkapselung
Ein Ausweg aus der oben beschriebenen Misere, dass Sie einerseits Attribute gegen
unerwünschte Änderungen schützen, aber andererseits in bestimmten Situationen
Änderungen zulassen möchten, besteht darin, anstelle des Modifiers
final
den Modi-
fier
private
zu verwenden:
class Bruch {
private int zaehler;
private int nenner;
...
Durch den Modifier
private
ist ein Zugriff (schreibend und lesend) auf die Attribute des
Objekts
von
außen
nicht mehr möglich. Von außen bedeutet, dass innerhalb von
Methoden des Objekts der lesende und schreibende Zugriff uneingeschränkt möglich
ist.
Beim Versuch, mit
System.out.println(a.zaehler)
von einem Programm aus lesend
auf das Attribut
zaehler
des Bruchs
a
zuzugreifen, wird als Fehler angezeigt, dass das
Attribut
zaehler
nicht sichtbar ist. Die Methoden, die schreibend auf die Attribute
zugreifen (
kuerzen
,
erweitern
etc.) können dagegen wieder verwendet werden. Nach
dem Entfernen der Kommentare werden dort keine Fehler mehr angezeigt.
Den Modifier können Sie nicht nur für Attribute verwenden. Auch Methoden können
Sie in gleicher Weise durch diesen Modifier gegen Nutzung von außen schützen. Diese
Methoden können Sie dann nur noch innerhalb anderer Methoden der Klasse verwen-
den.