Programmieren Java return this?

1 Antwort

Mit "return this" wird einfach das Objekt selbst zurückgegeben. In der main-Methode würde es also keinen Unterschied machen, ob du "System.out.println(figuren[i].gibInstanz())" oder nur "System.out.println(figuren[i])" schreibst.

Wenn du die Methode in den vererbten Klassen überschreibst, kannst du als Rückgabetyp (also im Funktionsheader) nur "GeometrischeFigur" angeben. Das, was im Endeffekt hinter dem "return" Befehl steht, kann aber auch ein Dreieck oder Rechteck sein. Also das musst du nicht extra umwandeln.

RedDevil1982 
Fragesteller
 27.03.2023, 12:38

Danke. Ehrlich gesagt sind mir deine Antworten aber nicht so ganz klar:

"In der main-Methode würde es also keinen Unterschied machen, ob du "System.out.println(figuren[i].gibInstanz())" oder nur "System.out.println(figuren[i])" schreibst."

=> Warum macht das jetzt hier keinen Unterschied? Wegen dem return this in der Methode gibInstanz()?

0
daCypher  27.03.2023, 14:08
@RedDevil1982

Genau. Das "return this" heißt, dass das Objekt einen Verweis auf sich selbst zurückgibt. Ich weiß grade nicht, wie ich das erklären soll...

Also in der main-Methode wird ja ein Array aus "GeometrischeFigur"-Objekten erzeugt. Das Array hat Platz für zwei Objekte und wird mit einem Dreieck und einem Rechteck gefüllt.

Dann wird die Schleife gestartet, die alle Objekte des Arrays ausgeben soll. Als erstes wird das Objekt "figuren[0]" gelesen (also das Dreieck). Von dem Dreieck wird dann die Methode "gibInstanz()" aufgerufen, die aber durch das "return this" einfach sich selbst zurückgibt. Also quasi "Das Ergebnis der Funktion 'gibInstanz' bin ich selbst". Also kriegt die println-Methode das Dreieck-Objekt, um es aus der Console auszugeben. Das hätte es aber halt auch gekriegt, wenn man direkt figuren[0] an println übergeben hätte.

Allerdings, wenn du die Methode "gibInstanz" in der Klasse Dreieck überschreibst, kannst du auch was anderes zurückgeben. Du könntest sogar z.B. ein neues Rechteck zurückgeben, weil die Klasse auch von der Überklasse "GeometrischeFigur" erbt.

1
RedDevil1982 
Fragesteller
 27.03.2023, 18:16
@daCypher

Danke für deine Erklärung. So wird es auf jeden Fall verständlicher.

1