Vorlesung Informatik 1 - Teil A: Java Kurs

1.5 Konstruktor, this und super

Wenn wir mit new ein Objekt erzeugen, wird jedesmal eine spezielle Methode gerufen, welche das Objekt initialisiert: der Konstruktor.

Konto k1 = new Konto();

Ein Konstruktor ist eine spezielle Instanzmethode:
  • sie heißt so wie die Klasse, d.h. sie beginnt nicht wie üblich mit einem Kleinbuchstaben
  • sie hat keinen return-Typ
  • Klassen können mehrere Konstruktoren haben, die sich in der Anzahl und/oder dem Typ der Parameter unterscheiden.
    Man nennt das überladene Konstruktoren.
    Die Klasse javax.swing.JFrame hat mehrere Konstruktoren, z.B.:
         JFrame fenster1 = new JFrame("Beispiel 1"); // erzeugt ein Anwendungsfenster mit dem Titel "Beispiel1"
         JFrame fenster2 = new JFrame(); // erzeugt ein Anwendungsfenster ohne Titel
  • Ein Konstruktor ohne Parameter heißt Standardkonstruktor.
  • Hat ein Konstruktor einen oder mehrere Parameter nennen wir ihn allgemeinen Konstruktor
  • Wir definieren Konstruktoren wie normale Methoden:
    public class Konto{
         private int kontoNummer, saldoCent;        // Instanzvariablen

         public Konto(int nummer){        // ein allgemeiner Konstruktor
              this.kontoNummer = nummer;     // this.kontoNummer  ist die Instanzvariable, nummer der Parameter
              this.saldoCent = 500;                   //  ein Neukunde bekommt 5 Euro gutgeschrieben
       }
  • Ein Konstruktor initialisiert ein Objekt. Prüfen Sie, ob ihr Konstruktor alke Instanzvariablen mit Anfagnswerten belegt.
  • Das Schlüsselwort this zeigt auf das Objekt, für das der Konstruktor gerufen wurde (mit new). 
  • Will man den Konstruktor der Basisklasse rufen, verwendet man super:
    class Girokonto extends Konto{
          private int limit;       //   zusaetzliche Eigenschaft

          public Girokonto(int kontoNummer){    // Konto ohne Überziehungskredit
                  super(kontoNummer);     // initialisiert Objekt der Basisklasse
                  limt=0;
           }
          public GiroKonto(int kontoNummer, int limit)  // Konto mit Überziehungskredit
                 super(kontoNummer);
                 this.limit = limit;
          } 

Weiterführende Links

Kapitel in Java ist auch eine Insel

Lehrvideo  (YouTube)