Antwort:
x = 3; y = 5 Beginn PunktDoppler x = 3; y = 5 x = 6; y = 10 Ende PunktDoppler x = 6; y = 10
Immer noch Call-By-Value
Hier sind einige Fakten:
- Wenn eine Methode eine andere Methode aufruft, indem sie primitive Daten
als Parameter verwendet,
kann die aufgerufene Methode die Daten der ersten Methode nicht ändern. - Aber wenn eine Methode eine andere Methode aufruft, indem sie einen
Objektreferenz-Parameter verwendet, kann der
Inhalt eines veränderbaren Objekts geändert werden und die
Änderung wird in der ersten Methode sichtbar sein. - Unveränderbare Objekte können nicht geändert werden.
Diese Fakten sind bei Call-By-Value konsistent.
Der “Wert” ist die Referenz auf das Objekt.
Die aufgerufene Methode hat ihre eigene Kopie dieses Werts und kann die Kopie der
aufrufenden Methode nicht ändern.
Aber, sie kann das Objekt ändern.
Natürlich, sogar wenn eine Methode eine Referenz auf ein Objekt hat,
kann das Objekt nur geändert werden, wenn das Objekt Änderungen erlaubt
(entweder durch öffentliche Instanzvariablen oder durch Zugriffsmethoden).
FRAGE 12:
Betrachten Sie die Definition der MeinPunkt Klasse.
Überlegen Sie sich einen Weg, um MeinPunkt-Objekte unveränderbar zu machen.