Die zwei Instanzvariablen können private gemacht werden.
Hier ist eine überarbeitete Version des Programms.
Jetzt sind MyPoint-Objekte unveränderbar, da selbst mit einer
Referenz die Methoden das Objekt nicht ändern können.
class ImmutablePoint
{
private int x, y;
public Point( int px, int py )
{
x = px; y = py;
}
public void print()
{
System.out.println("x = " + x +
"; y = " + y );
}
}
class PointPrinter
{
public void print( ImmutablePoint p )
{
p.print();
p.x = 77 ; // FALSCH! das können Sie nicht tun
}
}
class PointTester
{
public static void main ( String[] args )
{
ImmutablePoint pt =
new ImmutablePoint( 4, 8 );
pt.print();
pt.x = 88; // FALSCH! das können Sie nicht tun
PointPrinter pptr = new PointPrinter();
pptr.print( pt );
}
}
Da ImmutablePoint-Objekte unveränderbar sind,
wird ein Konstruktor benötigt, um die Instanzvariablen mit
ihren permanenten Werten zu initialisieren.