Home > Informatik > Begriffe und Konzepte > Objekt, Identität

Objekt, Identität

Definition

Objekt-Identität

Jedes Objekt einer Klasse hat seine eigene Identität. Das ist selbst dann der Fall, wenn alle Instanzvariablen die selben Werte enthalten.

 

Identitätskriterien

In den meisten Programmiersprachen - so auch in Java - gibt es mindestens zwei Identitätskriterien, die sicherstellen, dass zwei Objekte eine unterschiedliche Identität haben:

  1. der Name des Objektes
  2. die Speicheradresse des Objektes
Identität und Gleichheit

Identität und Gleichheit sind nicht identisch (pun intended!). Zwei Objekte können gleich sein, wenn die Werte aller Instanzvariablen übereinstimmen, sie sind aber nicht identisch, sondern haben unterschiedliche Identitäten (Name, Speicheradresse).

   Circle sonne = new Circle(20, 50, 30, "yellow");
   Circle mond =  new Circle(20, 50, 30, "yellow");

Die beiden Circle-Objekt sind hier zwar gleich, haben aber trotzdem unterschiedliche Identitäten.

Betrachten wir dazu folgenden experimentellen Quelltext:

public class Identitaet
{
    Circle sonne, mond;
    
    public Identitaet()
    {
       sonne = new Circle();
       mond  = new Circle();
       
       sonne.setPosition(100,200);
       sonne.setRadius(50);
       mond.setPosition(100,200);
       mond.setRadius(50);
       System.out.println(sonne);
       System.out.println(mond);
    }
}

Den beiden Objekten sonne und mond werden durch die Setter-Methoden setPosition() und setRadius() die absolut gleichen Werte zugewiesen. Dennoch zeigen die beiden println()-Anweisungen, dass es sich um zwei verschiedene Objekte handelt:

Circle@5e710ced
Circle@74fc119

Das ist die Ausgabe der println()-Anweisungen in der Konsole. Die beiden Objekte befinden sich also an völlig unterschiedlichen Speicheradressen.

Was passiert nun, wenn wir die Anweisung

mond = sonne;

in den Quelltext der Klasse einbauen? Hier die Ausgabe der println()-Befehle nach dieser Anweisung:

Circle@427bff58
Circle@427bff58

Die beiden Objekte befinden sich jetzt an der selben Speicheradresse. Aber sind sie dadurch auch identisch?

 

Quellen:

  1. Lahres et al.: Objektorientierte Programmierung, Rheinwerk Computing 2021.
  2. Barnes, Kölling: Java lernen mit BlueJ - Objects first. Pearson-Verlag 2019.
  3. Ullenboom: Java ist auch eine Insel, Rheinwerk Computing 2023.