content

Object Reference

Eine Instanz wird angelegt durch new Student("Max", 29, true):

001.png

Man unterscheidet zwischen:

  • Instanz - die Eigenschaften und deren Werte

  • Objectreference - zeigt auf die Instanz

003.png

Es können mehrere Objectreferences auf das gleiche Instanz zeigen!

Beispiel

Student a, b, c, d, e;
004.png

Die 5 Objectreferences zeigen auf null!

Student a, b, c, d, e;


a = new Student("Susi", 19, false);
c = new Student("Max",  23, true);
e = new Student("Susi", 19, false);
005.png

Auch wenn zwei Instanzen die selben Wete bei den Eigenschaften aufweisen, sind sie zwei unabhängige Instanzen!

Manuelles Abarbeiten

Gegeben ist folgender Code:

Student a, b, c, d, e;


a = new Student("Susi", 19, false);
e = a;
e.setAlter(25);
b = new Student("Max",  23, true);
a = b;
a.setAlter(27);
e = new Student("Werner", 33, false);
d = a;
//c.setAlter(27);   c ist null => Null Pointer Exception
d.setAlter(33);
a.setMatura(true);

Skizze mit den Objektreferenzen:

006.png

Ergebnis:

Objectreference name alter matura
a "Max" 33 true
b "Max" 33 true
c null
d "Max" 33 true
e "Werner" 33 false

Debugger

Code

public class ObjectReference
{
    public void testen()
    {
        Student a, b, c, d, e;

        c = null;
        a = new Student("Susi", 19, false);
        e = a;
        e.setAlter(25);
        b = new Student("Max",  23, true);
        a = b;
        a.setAlter(27);
        e = new Student("Werner", 33, false);
        d = a;
        c.setAlter(27);
        d.setAlter(33);
        a.setMatura(true);
    }
}

Haltepunkt setzten:

007.png

STOP

NullPointerException

009.png

Die Objectreference c zeigt auf null.

Beim Aufruf einer Methode der Objectreference c erhalten wir eine NullPointerException.

008.png

Ergebnis

010.png

Wenn keine Objectreference mehr auf eine Instanz zeigt löscht der Garbage Collector die Instanz!

Beispiel: “Susi”

Das Ergebnis kann überprüft werden:

        a.printStudent();
        b.printStudent();
        System.out.println(c);
        d.printStudent();
        e.printStudent();
    }
011.png

Object reference

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(e);
    }
012.png

Drei Objectreferences zeigen auf die gleiche Instanz Student@15c1a7ab.