Übergabe / Rückgabe

mock

Neues Mitglied
Hallo zusammen!

Ich habe angefangen meine ersten Methoden zu schreiben und dabei bin ich immer wieder über die Wörter Rückgabe- und Übergabe- gestolpert.
Ich weiß, dass
- Methoden mit void keinen Wert zurückgeben
- Methoden ohne void immer ein "return" am Ende benötigen
- Übergabeparameter in den Klammern hinter dem Methodennamen stehen.

Mir ist nicht ganz klar "an wen" etwas zurückgegeben / übergeben wird und warum. Was ist der Unterschied zwischen Übergabe und Rückgabe? Kann eine Methode ohne Rückgabewert etwas übergeben?

Über eine Erklärung würde ich mich freuen. 🙂

M.
 
Naja also eine Methode wirt immer aufgerufen und wenn die Methode einen Rückgabe wert hat aknnst du diesen abgreifen zb so: int rüchgabe = Methode();
und wenn du eine Methode aufrufen willst mit bestimmten paramethern machst du das mit der Übergabe. also zb Methode(eine Zahl); und in der Methiode kannst du dann etwas mit der zb übergebenen Zahl anfangen.
 
In einer Methode die keinen Rückgabetyp hat (void) kannst du nur in der Methode Werte verändern.
Java:
public void Methode(mögliche Parameter){
         Anweisungen; 
}
In einer Methode mit Rückgabetyp kannst du in der Methode Werte verändern sowie außerhalb durch den Rückgabewert.
Java:
public Rückgabetyp methode(mögliche Parameter){
	Anweisungen;
	return wert (= Wert, welcher dem Rückgabetyp entspricht)
}
Aufgenommen kann dieser Rückgabewert über eine Wertzuweisung.
Java:
Rückgabetyp var = methode(mögliche Parameter);
Die Variable var muss dabei den gleichen Rückgabetyp haben wie der Rückgabewert.

Die Übergabe bedeutet dabei das übergeben von Werten(Parameter), welche ich in der Methode brauche.
Die Rückgabe bedeutet das zurückgeben eines Wertes, welchen ich später brauchen werde.
 
Zuletzt bearbeitet:
Übergabe = in die Methode hinein
Rückgabe = aus der Methode heraus

Die beiden sind unabhängig voneinander:
- eine Methode mit x Parametern kann mit oder ohne Rückgabewert sein - eine Methode mit Rückgabewert kann 0 oder beliebig viele Parameter haben

Du kannst auch global definierte Variablen innerhalb der Methoden benutzen:
Java:
class Playground{
   private String _blub;

   public void doSomething(){
    _blub = "blablabla";
   }

}

oder Methoden aus anderen Methoden heraus aufrufen:

Java:
class Playground{
   public void doSomething(){

      doSomethingElse(4)
   }

   private bool doSomethingElse(int dadada){
      return true;
   }

}
Auch hier gibt es keine Einschränkungen, Methoden ohne Parameter oder Rückgabetyp können andere Methoden aufrufen, egal, was die erwarten oder zurückgeben. Ebenso andersherum.

Wichtig ist nur, dass die Methodensignatur (Anzahl, Reihenfolge und Typ der Parameter) eingehalten wird und der Rückgabewert mit der "empfangenden" Variable (hier: double b) übereinstimmt:

Java:
public double doSomething(int a, String k, boolean g){}

//falsch
doSomething();
doSomething(false,4,"blub");
boolean a = doSomething();

//richtig
doSomething(4, "blub", true);
double b = doSomething(4, "blub", true);
 
Zuletzt bearbeitet:
Verstehe..
Aber aus welchem Grund übergibt man Werte über Übergabeparameter in eine Methode, wenn man doch einfach globale Variablen verwenden kann?
 
1. Man versucht, den Scope, also die Reichweite so gering wie möglich zu halten. Wenn es nicht notwendig ist, etwas global zu machen, wird es lokal.
2. Du hast mehr Kontrolle, was/wo mit den Variablen gemacht wird.
3. Bei globalen Variablen musst du mehr aufpassen, dass sie auch initialisiert/deklariert wurden. Wenn du sie als Parameter definierst, kannst du davon ausgehen, dass da "was drin ist". Wenn die Parameter null o.ä. sind, ist das nicht dein Problem. Simpel ausgedrückt.
4. Die Methoden sind austauschbarer. Du kannst eine komplette Methode von a nach b schieben und sie ist trotzdem noch eine in sich geschlossene funktionierende Einheit.
5. Methoden mit Parametern sind meiner Meinung nach einfacher testbar, da ich alle möglichen Parameter-Kombinationen austesten und so das Verhalten der Methode überprüfen kann.
6. Du kannst private Variablen weitergeben, ohne sie öffentlich machen zu müssen.


Java:
class A{
   private String _a;

   public void doSomething(){
     B b = new B();
     b.doAnother(_a);

   }

}

class B{

   public void doAnother(String s){
   
   }
}
 
Zuletzt bearbeitet:
7. Bei globalen Variablen besteht eine hohe Abhängigkeit der Methoden (feste Kopplung) während durch die Übergabe von Parametern die Methoden eine höhere Wiederverwendbarkeit und somit eine losere Kopplung haben.
 
Zuletzt bearbeitet:

Zurück
Oben