# Methode toString



## thor_norsk (3. Dez 2021)

Guten Morgen, 
ich Weiß nicht warum ich toString() überschreiben soll?

*Aufgabe: *Sie haben von einer selbst erstellten Klasse eine weitere Klasse abgeleitet. In der abgeleiteten Klasse haben Sie die Methode toString() überschrieben. In der Basisklasse dagegen nicht.
Können Sie die Methode toString() der Basisklasse in der abgeleiteten Klasse mit der Referenz super aufrufen? Wenn ja,  was liefert Ihnen diese Methode?

*Laut Internet*: Alle *Java*-Objekte verfügen über die *toString*()-Methode, da sie von Objekt vererbt wird. *toString*() liefert eine eindeutige Kennung eines Objekts in Form eines Strings zurück. Für eine nachvollziehbare und selbst erklärende Kennung sollten wir *toString*() in unseren Klassen überschreiben.

*Meine Antwort:* Man kann mit der Referenz super,  toString() der Basisklasse aufrufen, aber man bekommt irgendwelche Werte die nicht überschrieben sind von der Basis Klasse??? 

Es wäre super, wenn jemand mir erklären könnte was genau passiert, damit ich den Sachverhalt bzw den Ablauf richtig verstehe.

*Danke.*


----------



## mihe7 (3. Dez 2021)

Die Wurzel der Klassenhierarchie bildet die Klasse java.lang.Object. Diese hat die Methode toString() definiert. Alle anderen Klassen sind direkt oder indirekt von der Klasse Object abgeleitet. Hat eine Klasse die Methdoe toString() nicht überschrieben, erbt sie diese von ihrer Superklasse. Diese Kette endet spätestens bei java.lang.Object.

Heißt: der Aufruf von super.toString() liefert das Ergebnis der von der Basisklasse verwendeten Implementierung von toString(). Da die Basisklasse die Methode nicht überschreibt, handelt es sich um eine Implementierung einer Superklasse der Basisklasse. Wurde in der Klassenhierarchie nirgends die Methode toString() überschrieben, wird die Implementierung der Klasse java.lang.Object verwendet und die liefert die eindeutige Kennung, wie Du sie oben beschrieben hast.


----------



## M.L. (3. Dez 2021)

Überschreiben muss man die Vorgabe übrigens nicht, aber eine hexadezimale Ausgabe ist wohl etwas schwerer zu interpretieren... S.a. die original Implementierung der toString-Methode ( https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html ) : [CODE lang="java" title="Code"]getClass().getName() + '@' + Integer.toHexString(hashCode())[/CODE]


----------

