Die zwei Instanzvariablen können private
gemacht werden.
Hier ist eine überarbeitete Version des Programms.
Jetzt sind MeinPunkt
-Objekte unveränderbar, da selbst mit einer
Referenz die Methoden das Objekt nicht ändern können.
class UnveraenderbarerPunkt { private int x, y; public UnveraenderbarerPunkt(int px, int py) { x = px; y = py; } public void ausgeben() { System.out.println("x = " + x + "; y = " + y ); } } class PunktPrinter { public void print(UnveraenderbarerPunkt p) { p.ausgeben(); p.x = 77 ; // FALSCH! das geht nicht } } class PunktTester { public static void main (String[] args) { UnveraenderbarerPunkt pt = new UnveraenderbarerPunkt( 4, 8 ); pt.ausgeben(); pt.x = 88 ; // FALSCH! das geht nicht PunktPrinter pprinter = new PunktPrinter(); pprinter.print( pt ); } }
Da UnveraenderbarerPunkt
-Objekte unveränderbar sind,
wird ein Konstruktor benötigt, um die Instanzvariablen mit
ihren permanenten Werten zu initialisieren.
(Denkfrage:) Wäre es möglich eine
PunktDoppler
Klasse für UnveraenderbarerPunkt
-Objekte zu schreiben?