Könnte print() die Referenz auf das ursprüngliche String-Objekt verwenden, um den Inhalt dieses Objekts zu ändern?
Nein—da String-Objekte unveränderbar sind.
Nicht einmal die main() Methode kann das ursprüngliche Objekt ändern.
class MyPoint
{
public int x=3, y=5;
public void print()
{
System.out.println("x = " + x + "; y = " + y );
}
}
class PointTester
{
public static void main ( String[] args )
{
MyPoint pt = new MyPoint();
pt.print();
pt.x = 45; pt.y = 83;
pt.print();
}
}
|
Es ist gut, dass String-Objekte unveränderbar sind (sie können nicht geändert werden),
weil die main() Methode sicher sein kann, dass ihre message
vollständig unter ihrer Kontrolle bleibt.
Obwohl die print() Methode eine Kopie der Referenz bekommt,
kann sie das ursprüngliche Objekt nicht ändern.
Nicht alle Objekte sind unveränderbar.
Wichtig: Öffentliche Instanzvariablen von Objekten können von jeder Methode, die eine Referenz auf das Objekt hat, geändert werden, sogar wenn die Referenz ein formaler Parameter ist.
(Wenn eine Instanzvariable weder public noch private ist,
kann sie von einer Methode, die indemselben Paket ist, geändert werden.
Für jetzt ist all Ihr Code indemselben Paket, so dass der Effekt der gleiche ist, als wäre sie public.)
Das Programm hat eine benutzerdefinierte Klasse und ein Testprogramm.
Die main() Methode verwendet den Standardkonstruktor der Klasse MyPoint.
Dies ist der Konstruktor, den Sie automatisch bekommen, wenn Sie selbst keinen definieren.