next up previous contents index
Next: Klassenvariablen Up: Klassen und Objekte Previous: Klassen und Objekte

Konstruktoren

    Kreis c = new Kreis();

Ablauf:

Konstruktoren   initialisieren Objekte.

Wichtige Eigenschaften:

 

   public Kreis (double x, double y, 
                  double r)
   { this.x = x;  // 'this' löst
     this.y = y;  // Namens-
     this.r = r;  // konflikt
   }
   ...
   Kreis c = new Kreis(1.4,2.0.5.3);

Der parameterlose Konstruktor

   Kreis();
heißt Default-Konstruktor.   Er wird vom Compiler zur Verfügung gestellt, falls es keinen Benutzer-definierten Konstruktor gibt.

Der Compiler-generierte Default-Konstruktor ruft lediglich den Default-Konstruktor der Oberklasse auf.

Wir bekommen also Compiler-Fehlermeldungen,

Die Selbstreferenz this in Konstruktoren

this findet in Konstruktoren Anwendung, die andere Konstruktoren verwenden:

   public Kreis (double x, double y, 
                  double r)
   { this.x = x;
     this.y = y;
     this.r = r;
   }
   public Kreis(double r)
   { this(0.0, 0.0, r);
   }
   public Kreis(Kreis c)
   { this(c.x, c.y, c.r);
   }   
   public Kreis()
   { this(0.0, 0.0, 1.0);
   }

  Andere typische Anwendungen von this siehe Seite gif und Seite gif.

Solche Aufrufe anderer Konstruktoren stehen vor anderen Anweisungen im Konstruktorrumpf.

Solch ein expliziter Konstruktor-Aufruf über this

All dieses führt zu Compiler-Fehlermeldungen.

   public class tisch
   { bein[] beine;
     int anz_beine;
     public tisch()
     { this(anz_beine-1); // FALSCH!
     }
     public tisch(int n)
     { anz_beine = n;
     }
   }

Der Java-Compiler meldet:

   Can't reference anz_beine before the 
   superclass constructor has been called.
    { this(anz_beine-1);
           ^


next up previous contents index
Next: Klassenvariablen Up: Klassen und Objekte Previous: Klassen und Objekte

Peter Pfahler, 1997