Zum Hauptinhalt springen

Die Mutter aller Klassen

Alle Klassen in Java sind letztlich Unterklassen der Klasse Object. Daher wird diese auch als die Mutter aller Klassen bezeichnet. Die Klasse vererbt ihren Unterklassen unter anderem die Methoden boolean equals(object: Object), int hashCode() und String toString(). Diese drei Methoden sollte jede Unterklasse sinnvoll überschreiben.

Die Methode boolean equals(object: Object)

Die Methode boolean equals(object: Object) prüft zwei Objekte auf Gleichheit. Zwei Objekte gelten dabei in der Regel als gleich, wenn all ihre Attribute gleich sind.

Computer.java (Auszug)
public class Computer {
...
@Override
public boolean equals(Object object) {
if (this == object) {
return true;
}
if (object == null) {
return false;
}
if (getClass() != object.getClass()) {
return false;
}
Computer other = (Computer) object;
return Objects.equals(description, other.description) && Objects.equals(cpu, other.cpu)
&& memoryInGb == other.memoryInGb;
}
...
}

Die Methode int hashCode()

Die Methode int hashCode() liefert den Hashcode des aktuellen Objektes zurück. Die Methode sollte so überschrieben werden, dass gleiche Objekte den gleichen Hashwert zurückgeben. Dies ist vor allem beim Arbeiten mit Hash-basierten Datensammlungen wie z.B. der Klasse HashMap<K, V> notwendig.

Computer.java (Auszug)
public class Computer {
...
@Override
public int hashCode() {
return Objects.hash(description, cpu, memoryInGb);
}
...
}

Hinweis

Die statische Methode int hash(values: Object...) der Klasse Objects liefert eine einfache Möglichkeit zur Implementierung der Methode boolean hashCode().

Die Methode String toString()

Die Methode String toString() liefert eine eindeutige Kennung des Objektes in der Form [Vollständiger Klassenname]@[Adresse des Objektes im Hauptspeicher in hexadezimaler Notation] zurück. Die Methode sollte so überschrieben werden, dass alle relevanten Attribute des Objektes als Zeichenkette zurückgegeben werden. In der Regel geschieht dies in der Form [Klassenname] [[Attribut]=[Attributswert], ...].

Computer.java
public class Computer {
...
@Override
public String toString() {
return "Computer [description=" + description + ", cpu=" + cpu + ", memoryInGb=" + memoryInGb
+ "]";
}
...
}
Hinweis

Wird den print-Methoden des Ausgabestroms System.out eine Objektreferenz übergeben, wird implizit die Methode String toString() des jeweiligen Objektes aufgerufen.