15.4 Objekte sind Referenzen

 

  Wird ein Objekt p1 der Klasse Punkt erzeugt, so ist der "Variablenwert" von p1 eine Adresse. Diese Adresse ist der Ort, wo siech das Objekt befindet. 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. Wir kennen das von den String-Objekten.

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.

Im nächsten Beispiel bleibt es dem Leser überlassen, sich die Ausgabe zu erklären.
 

Download:
PunktDemo2.java
public class PunktDemo2 {

  public static void main (String[] args) {
      Punkt p1 = new Punkt(2,2);
      Punkt p2 = p1;
      System.out.println("P1("+p1.getx()+"/"+p1.gety()+")");
      System.out.println("P2("+p2.getx()+"/"+p2.gety()+")");
      p2.verschiebe(3,3);
      System.out.println("P1("+p1.getx()+"/"+p1.gety()+")");
      System.out.println("P2("+p2.getx()+"/"+p2.gety()+")");
  }
}
Ausgabe P1(2/2)
P2(2/2)
P1(5/5)
P2(5/5)
   
zu 15.5 Übungen
zur Startseite www.pohlig.de (C) MPohlig 2005