18.7 Objekte sind Referenzen

 

  Wird ein Objekt p1 der Klasse Punkt erzeugt, so ist der "Variablenwert" von p1 eine Adresse. Diese Adresse erst beinhaltet das Objekt. Für jedes Objekt werden Kopien der Attribute angelegt. Von den Objekt-Methode gibt es in den Objekten keine Kopien. Damit eine Methode wie z.B. verschiebe() für das Objekt p1 aufgerufen werden kann, muss das Objekt wissen, von welcher Klasse es eine Instanz ist. p1 "weiß" also, dass er ein Punkt ist und deshalb verschoben, bzw. am Ursprung gespiegelt werden kann.
Dass in
p1 und p2 nur Referenzen abgelegt sind, hat für das Vergleichen von p1 mit p2 Konsequenzen.

Der Vergleich p1==p2 liefert true, wenn p1 und p2 auf das gleiche Objekt, und damit auf den gleichen Speicherplatz verweisen. In unserem Fall würde false geliefert. Um die Objekte zu vergleichen, d.h. um zu erfahren, ob die Objektattribute die gleichen Werte haben benutz man die Methode equals(). Um zu erfahren, ob die beiden Punkte p1 und p2 die gleichen Koordinaten haben, wertet man den Ausdruck p1.equals(p2); aus. In unserem Fall wird auch hier false geliefert.
Warum die Methode
equals() in der Klasse Punkt zur Verfügung steht, obwohl wir sie nicht implementiert haben, werden wir im nächsten Kapitel einsehen.

zu 18.8 Typisierung von Klassen
zur Startseite www.pohlig.de (C) MPohlig 2004