Vorlesung Informatik 1 - Teil A: Java Kurs

2.9 Methoden: Signatur, Parameter und return-Wert

Der Name, return-Typ und die Parameterliste bilden die Signatur einer Methode. 

Überschriebene Methoden haben eine identische Signatur, überladene Methoden unterschiedliche Signaturen.

Die Parameter bei der Definition einer Methode nennt man Formalparameter:

    public void berechne(int a, int b, int c){ ...   // a, b und c sind die Formalparameter

Beim Aufruf der Methode spricht man von Aktualparametern:

    int x=44;
    berechne(x, 20, 99);  x, 20 und 99 sind Aktualparameter 

In Java sind die Aktualparameter immer Kopien der Variablen bzw. Werte des rufenden Programmes (call by value). Das schützt uns davor, aus Versehen eine Variable des rufenden Programmes zu überschreiben.

Beispiel:

   void tuWas(int x){
         x=42; 
   }
      ...

  int k=5;
  tuWas(k);
  System.out.println("k="+k);  // k hat noch den Wert 5, nicht 42


Wir können uns also darauf verlassen, dass eine Methode, die man ruft,  keine unserer Variablen verändert. Das ist ein großer Vorteil gegenüber manchen anderen Programmiersprachen.

Auch bei Referenz-Datentypen ist der Wert der Aktualparameter eine Kopie. Da diese Variablen immer nur die Adresse eines Objekts enthalten, ist das kein Effizienzproblem, es werden ja nur 4 Bytes kopiert.

Beispiel:
   void  methode1(JButton b1){
         b1 = new JButton("A");
   }
    ...   

  JButton b = new JButton("B");
  methode1(b);
  System.out.println(b.getText());   // gibt 'B' aus

Die Anweisung in methode1 hat keine Auswirkung im rufenden Programm, denn b1 ist eine Kopie von b. Beide zeigen aber auf das gleich Objekt.

Beispiel:
   void  methode2(JButton b2){
         b2.setText("A");
   }
    ...   

  JButton b = new JButton("B");
  methode2(b);
  System.out.println(b.getText());   // gibt 'A' aus

Die Anweisung in methode2 ändert das Objekt, auf das b und b2 zeigen. Deshalb wirkt sich die Änderung im rufenden Programm aus.

Rückgabewert:

Gibt eine Methode ein Objekt zurück, wird auch hier nur die Referenz auf das Objekt zurückgegeben.

Fazit: Java Variablen sind immer Referenzen, niemals die Objekten selbst.


Weiterführende Links

Kapitel zu Signatur, Parameter in Java ist auch eine Insel

Lehrvideo  (YouTube)