Helmichs Informatik-Lexikon

Overloading

Mehrere Methoden in einer Klasse

Eine Klasse kann mehrere Methoden mit dem gleichen Bezeichner haben, solange sich die Parameterlisten dieser Methoden unterscheiden. Hier ein einfaches Beispiel:

public class Rechteck
{
   int xPos, yPos, width, height;
   Color color;

   public Rechteck(int x, int y, int w, int h, Color c)
   {
      xPos = x; yPos = y;
      width = w; height = h;
      color = c;
	}

   public Rechteck(int x, int y, int w, int h)
   {
      this(x,y,w,h,Color.RED);
   }

   public Rechteck(int x, int y, int w)
   {
      this(x,y,w,w);
	}
}

Die Klasse Rechteck hat drei Konstruktoren, jeder hat aber eine andere Parameterliste. Der erste Konstruktor dient als eine Art "Hauptkonstruktor", der bei Bedarf von den anderen Konstruktoren aufgerufen werden kann.

Wird in einer Java-Anwendung beispielsweise ein neues Rechteck-Objekt erzeugt:

haus = new Rechteck(100,100,30);

so wird automatisch der dritte Konstruktor verwendet, um das neue Objekt zu erzeugen. Der dritte Konstruktor ruft dann den zweiten Konstruktor auf - das Wort this sorgt dafür, und übergibt dem zweiten Konstruktor vier Parameter, nämlich einmal die drei Parameter, die er selbst bekommen hat, und dann als vierten Parameter noch einmal w, die Breite des Rechtecks. Erzeugt wird so ein Rechteck mit width = height, also ein Quadrat.

Allerdings hat dieses Quadrat keine beliebige Farbe, sondern wird von dem zweiten Konstruktor auf die Farbe RED gesetzt. Denn der zweite Konstruktor übergibt seine vier Parameter an den ersten Konstruktor und fügt als fünften Parameter die Farbe RED hinzu.

Der erste Konstruktor erhält nun fünf Parameter, und erst der erste Konstruktor verändert jetzt die Werte der fünf Attribute. Darum könnte man diesen ersten Konstruktor zu Recht als "Hauptkonstruktor" bezeichnen.

Man kann alle drei Konstruktoren zur Erzeugung neuer Objekte benutzen. Will man im Java-Applet nun ein blaues Rechteck erzeugen, so ruft man auf:

haus = new Rechteck(100,100,50,30,Color.BLUE);