Unterschied void und return?

6 Antworten

return - Das ist die einzige Möglichkeit einen Wert aus der aufgerufenen Methode an die aufrufende Methode zurückzugeben.

 z.B. 

für get()-Methoden brauchst du immer ein return. Wenn du also einen Wert aus einem anderen Objekt möchtest und das über eine get-Methode 

für eine Berechnung: Wenn du in einer Methode einen Wert noch errechnen musst, kannst du das auslagern in eine andere Methode, der übergibst du einen Wert. Diese Methode rechnet dann und gibt dir über return den gewünschten Wert zurück. Dann kannst du damit weiter arbeiten. 

Oder eine Kontrolle: Du möchtest wissen ob zwei Objekte die gleichen sind, du nutzt dafür eine Methode die die Werte vergleicht und einen boolean zurückgibt: TRUE für Ja das sind die gleichen oder FALSE für nein das sind nicht die gleichen.

void - Das nutzt du wenn du nur einen Änderung an lokalen Daten vornehmen möchtest. z.B. eine set()-Methode um einen lokalen Wert in einem Objekt zu verändern. Hier benötigst du keine Rückgabe. Es soll nur die Methode ausgeführt werden.

Stell dir vor, du schreibst eine Methode, die dir den Flächeninhalt eines Würfels berechnen soll.

Dann rufst du die Methode auf und übergibst alle notwendigen Parameter (Höhe, Breite, Länge) und die Methode gibt dir das Ergebnis zurück.

Dann ist das Ergebnis der return-Wert.

Angenommen, du schreibst eine Methode, die nur etwas ausführen soll. z. B. einen Wert in einer Datei ändern. Dann brauchst du nichts zurück geben. Du übergibst zwar als Parameter an die Methode den neuen Wert, der in die Datei geschrieben werden soll. Aber du erhälst kein Ergebnis. Es gibt ja auch keins.

Und dann wird ein void verwendet um der Methode zu sagen, dass sie keinen Rückgabewert besitzt

void und return sind wie hier beschrieben 2 unterschiedliche Dinge...Während Void eine Prozedur beschreibt, die wie eine ToDo-Liste abgearbeitet wird, wird bei Return am Ende ein Wert zurückgegeben. Daher ist auch der Aufruf jeweils verschieden. Eine Funktion, die eine Return-Methode enthält, muss einen gewissen Datentyp besitzen, z.B. Integer (dann gibt diese Methode einen Integer zurück).Beispiel:

public void test1(){

x++;

z+=23;

}

public Integer test2()

{

x++;

z+=23;

return z+(2*x);

}

Ein Aufruf von test1() wird immer so aussehen:

test1();

Während der Aufruf von test2() unterschiedlich sein kann, z.B. :

y=test2(); //nun hat y den Wert, der von test2() zurück gegeben wird

oder auch if(test2()>10) { ... }

Gehen wir davon aus, dass test2() den Wert 25 zurück gibt, bedeutet das dann auf Deutsch:

y=25;

oder auch

if(25>10) { ...}

Generell kannst du damit vordergründig Getter und Setter programmieren. Angenommen, du entwickelst ein Spiel, dann kannst du z.B. mit

public integer getX(){

return x;

}

jederzeit die X-Variable des Spielers abfragen. Die Notwendigkeit besteht in den Zugriffsrechten... Ist die Variable nicht public, so kann auf diese von außerhalb nur über Getter und Setter zugegriffen werden.Ein Setter wäre dann z.B.

public void setX(int newx){

x=newx;

}

Wenn deine Methode etwas zurückgeben soll (z. B. Eine Berechnung) dann nutzt du als methidendeklaration int(für ganzzahlen) dein Methodenname () und in der Methode musst du dann return "variable die zurückgegeben werden soll"; schreiben, wenn nichts zurück soll schreibst du statt int void.

void und return sind zwei sehr verschiedene Dinge. Ein Zusammenhang besteht hierin:

Eine Funktion ohne Rückgabewert (auch Prozedur genannt) hat dort, wo eine Funktion mit Rückgabewert den Typ des Rückgabewertes hat, den Pseudotyp void. Etwa so:

int quadrat(int x) {

return x * x;

};

void tuIrgendWas(specialAction jawasdenn) {

// irgendwelche Anweisungen;

return; // return void funktioniert vermutlich nicht, wäre aber auch sinnvoll

};

return würde ich auch nicht als Methode, sondern als Pseudomethode bezeichnen, weil es ähnlich wie eine Methode aufgerufen wird (iirc auch in Java ohne Klammern), aber eine Steueranweisung ist.

Woher ich das weiß:Berufserfahrung – Software-Entwickler

PWolff  16.04.2015, 16:25

Nachtrag: Beim Durchlesen der Antwort von TUrabbIT ist mir aufgefallen, dass ein return in einer void-Methode (bzw. Prozedur) nur nötig ist, wenn man die Prozedur vorzeitig verlassen will.

0
verreisterNutzer  16.04.2015, 16:56
@PWolff

in einer mit void definierten Methode gibt es kein return, will ich diese methode "vorzeitig" verlassen, muss ich break oder finish() (Programmende) verwenden

1
PWolff  17.04.2015, 11:00
@verreisterNutzer

Sorry, meine Java-Kenntnisse sind von meinen C#-Kenntnissen ziemlich verschüttet.

0
grtgrt  02.11.2019, 11:49
@verreisterNutzer

Richtig ist: Jede mit "void" deklarierte Methode kann an jeder nur denkbaren Stelle mit dem Befehl "return;" verlassen werden.

0