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.4

Überladen von Methoden


In vielen Fällen ist es sinnvoll, dass es von einer Methode verschiedene Varianten gibt. Die einzelnen Varianten unterscheiden sich in der Anzahl und Zusammensetzung der Parameter. So könnte es sinnvoll sein, von der Methode moveTo() eine weitere Variante zur Verfügung zu stellen, die zusätzlich die Einstellung einer anderen Farbe erlaubt:
  public void moveTo(int x, int y) {
    this.x = x;
    this.y = y;
  }

  public void moveTo(int x, int y, int color) {
    moveTo(x,y);
    this.color = color;
  }

Der Benutzer eines Objekts kann dann diejenige Variante auswählen, die den Anforderungen des konkreten Anwendungsfalls am ehesten entspricht. Wenn er den Punkt nur verschieben will, die Farbe des Punkts für ihn aber nicht relevant ist, so verwendet er die erste Variante von moveTo(). Ansonsten nimmt er eben die zweite.

Wie weiß nun der Interpreter, welche Methode er ausführen soll? Er trifft diese Entscheidung anhand der Struktur des Aufrufs der Methode. Wenn die Methode moveTo() mit drei int-Parametern aufgerufen wird, erkennt der Interpreter, dass die zweite Variante gewünscht wird. Damit diese automatische Erkennung funktioniert, darf es keine zwei Varianten geben, die in ihren formalen Parametern übereinstimmen.

Beim Überladen ist es auch erlaubt, dass gleichzeitig mit einer Abänderung der Parameterstruktur der Ergebnistyp einer Methode abgeändert wird. Die Betonung liegt hierbei auf gleichzeitig. Es ist nicht erlaubt, eine weitere Variante mit gleichen Parametern und anderem Ergebnistyp zu definieren, da dann der beschriebene Erkennungsmechanismus nicht mehr funktioniert. Es wäre somit zulässig, die zweite Variante von moveTo so zu implementieren, dass sie den übergebenen Farbwert auch zurückgibt.
  public void moveTo(int x, int y) {
    this.x = x;
    this.y = y;
  }

  public int moveTo(int x, int y, int color) {
    this.x = x;
    this.y = y;
    this.color = color;
    return color;
  }


 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.