Benutzer-Werkzeuge

Webseiten-Werkzeuge


klassen1:anwenden:objektreferenzen:start

Genaue Betrachtung: Objektreferenzen und Objekte

Schauen wir uns ein Beispielprogramm an:

Führe das Programm in Einzelschritten aus ("Step over": ) und sieh Dir parallel dazu die folgende Erklärung an:

AnweisungSituation danachErklärung
Rectangle r; r ist eine Variable, die auf ein Rectangle-Objekt zeigen kann (genannt "Objektreferenz" oder "Zeiger"). Noch zeigt sie auf kein Objekt, enthält daher den Wert null.
r = new Rectangle(50, 50, 400, 300);new Rectangle(50, 50, 400, 300) erzeugt ein neues Rechteck-Objekt, dessen linke obere Ecke bei (50, 50) liegt und das 400 Pixel breit und 300 Pixel hoch ist. Die Zuweisung r = … sorgt dafür, dass in der Variabler die Speicheradresse dieses Objekts hinterlegt wird. Man sagt: "r zeigt jetzt auf das Objekt."
r.setFillColor(Color.red);Die Methode setFillColor des Objekts, auf das r zeigt, wird aufgerufen. Sie setzt das Attribut fillColor auf den übergebenen Wert Color.red.
r.rotate(30)Die Methode rotate des Objekts, auf das r zeigt, wird aufgerufen. Sie erhöht das Attribute angle des Objekts um den Wert 30, bewirkt also eine Rechtsdrehung des Rechtecks um 30°.

Objektreferenzen (auch Zeiger genannt) sind nicht die Objekte selbst, sondern Variablen, die auf Objekte zeigen können.
Genauer: Die Objekte liegen im Arbeitsspeicher des Rechners. Zeigt eine Objektreferenz auf ein Objekt, dann bedeutet das, dass sie die Anfangsadresse des Speicherbereiches enthält, in dem das Objekt gespeichert ist.

Zeigt eine Objektreferenz auf kein Objekt, so enthält sie den Wert null.

Verschiedene Objektvariablen können auch auf das selbe Objekt zeigen:

Die Anweisung k = r in Zeile 4 bewirkt, dass der Wert von r (also die Adresse des Rechteck-Objekts) in die Variable k hineinkopiert wird. Nach dieser Anweisung sieht die Situation also so aus:

  1. Die Objektreferenzen r und k zeigen am Ende des Programms auf das selbe Rectangle-Objekt. Insbesondere gibt es nur ein Rectangle-Objekt!

    Die Anweisung r.rotate(30) bewirkt also exakt dasselbe wie k.rotate(30).

  2. Die Anweisungen Rectangle r; und r = new Rectangle(50, 50, 400, 300); kann man zu einer Anweisung zusammenfassen und kurz schreiben:
    Rectangle r = new Rectangle(50, 50, 400, 300);.

Primitive Datentypen

Variablen mit primitiven Datentypen (d.h. int, float, double, char, boolean) speichern keine Referenzen auf Werte, sondern direkt die Werte selbst. Bei Ihnen bewirkt der Zuweisungsoperator also ein Kopieren des Wertes. Im folgenden Programm speichern die zwei Variablen am Ende zwei unterschiedliche Zahlenwerte:

klassen1/anwenden/objektreferenzen/start.txt · Zuletzt geändert: 2021/12/29 11:29 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki