Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


4.7.1

Deklaration von Methoden



Methoden haben einen Kopf und einen Rumpf. Ein Methodenkopf besteht in Java grundsätzlich aus: Die Kombination aus Bezeichner, Rückgabewert und Parametertypen nennt man auch die Signatur einer Methode. Eine Klasse darf keine zwei Methoden mit identischer Signatur haben.

Parameter

In Java werden Parameter grundsätzlich als Wert übergeben (call by value). Das gilt auch für Objektreferenzen, d. h., wenn in einer Methode eine übergebene Objektreferenz verändert wird (z. B. Zuweisung von null), wirkt sich das nicht auf die Referenz aus, die der Aufrufer der Methode hält.

Der Rumpf folgt dem Methodenkopf und wird wie jeder Programmblock in Java in geschweiften Klammern eingefasst. Es ist nicht zulässig, in einer Methode eine Unterfunktion im Sinne der Sprache Pascal einzuschachteln. Es ist seit Version 1.1 dagegen möglich, in einer Methode eine lokale Klasse zu vereinbaren.

Die Klasse Point besitzt die beiden Methoden moveTo() und moveRel(), die den Punkt absolut oder relativ verschieben.
  public void moveTo(int x, int y) {
    this.x = x;
    this.y = y;
  }

  public void moveRel(int dx, int dy) {
    x += dx;
    y += dy;
  }

Hier verfügen beide Methoden über Parameter, die dem Objekt näher mitteilen, wie es sich beim Aufruf der Methode zu verhalten hat. Natürlich ist es auch möglich, Methoden ohne Parameter zu definieren. Es wäre beispielsweise denkbar, der Klasse Point eine Methode hinzuzufügen, die den Punkt an den Ursprung verschiebt:
    public void toOrigin() {
      moveTo(0, 0);
    }
Analog zu den Konstruktoren ist es bei Methoden möglich, dass eine Klasse mehrere Varianten derselben Methode besitzt. Dieser Vorgang wird Überladen genannt und ist im Abschnitt 4.7.4 näher beschrieben.

Konstante Parameter

[1.1]Seit Version 1.1 kann ein Methodenparameter als konstant vereinbart werden, indem der Modifier final vorangestellt wird. Dies hat zur Folge, dass der Compiler an allen Stellen einen Fehler meldet, an denen der Parameter auf der linken Seite einer Zuweisung steht.

Bei Objektreferenzen ist zu beachten, dass final lediglich bewirkt, dass die übergebene Referenz nicht verändert werden darf. Der Zustand des referenzierten Objekts dagegen kann sehr wohl geändert werden. Unter Verwendung von final könnte man die Methode moveTo auch folgendermaßen vereinbaren:
  public void moveTo(final int x, final int y) {
    this.x = x;
    this.y = y;
  }


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.