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 können Sie nicht tun
}
}
class PunktTester
{
public static void main ( String[] args )
{
UnveraenderbarerPunkt pt =
new UnveraenderbarerPunkt( 4, 8 );
pt.ausgeben();
pt.x = 88 ; // FALSCH! das können Sie nicht tun
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?