Java

Java Konstruktor

In diesem Artikel erklären wir dir den Java Konstruktor und wie er aufgebaut ist. Zusätzlich lernst du, wie du mit ihm ein neues Objekt einer Klasse erstellst.

Falls du keinen langen Text lesen möchtest, haben wir dir das alles zum Java Konstruktor in diesem Video %VERWEIS Java Konstruktor zusammengefasst.

Inhaltsübersicht

Java Konstruktor einfach erklärt

In einer Klasse %VERWEIS auf Java Klassen ist der Java Konstruktor eine Methode, die den gleichen Namen wie die Klasse hat. Sie wird dazu verwendet, ein neues Objekt dieser einen Klasse zu erstellen. Das ist der Grund, weshalb jede Klasseninstanz einen Konstruktor haben muss.

Programmierst du ihn nicht selbst, so erstellt der Compiler des Programms Java automatisch einen sogenannten Standardkonstruktor. Dabei ist die Methode ohne Parameter %VERWEIS auf Java Methode und hat keinen Inhalt. Ebenfalls kannst du den speziellen Konstruktor nicht sehen, da er nur im Hintergrund abläuft.

Java Standardkonstruktor

Der Standardkonstruktor einer Klasse Tier würde wie folgt aussehen:

public class Tier{

    private String art;
    private String name;

    public Tier(){

    }
}

Zusätzlich haben wir noch die Attribute Art und Name des Types String mitprogrammiert. Diese brauchen wir später. Der Java Konstruktor wird immer mit dem Modifier public versehen, da du von außerhalb der Klasse auf die Methode zugreifen möchtest, um ein Objekt zu erzeugen. Dieser Vorgang wird auch als Instanzierung bezeichnet. Außerdem gibt die Methode nichts zurück.

Beispielhaft würde die Instanzierung aus einer Main Methode unserer Klasse Tier wie folgt aussehen:

public class Mitmain{

    public static void main(String[] args){

        Tier hund = new Tier();  

    }
}

Nun kannst du nicht nur einen leeren Standardkonstruktor aufrufen, sondern diesem auch Startwerte mitgeben. Damit hätte dann dein neues Objekt gleich ein paar Werte zur weiteren Bearbeitung zur Verfügung. Hierfür musst du jedoch selbst einen spezifischen Java Konstruktor schreiben und kannst nicht mehr den Standardkonstruktor verwenden. Schauen wir uns einmal an, wie das dann aussieht.

Konstruktor Java

Nehmen wir an, du möchtest die Tierart Vögel programmieren. So kannst du bereits dem Konstruktor den Wert „Vögel“ aus der Main Methode übergeben. Damit musst du deinen Standardkonstruktor  erweitern, sodass er Parameter entgegen nehmen kann.

Der Aufruf zur Instanzierung und zur Speicherung des neuen Objekts in der Variablen vögel wäre dabei folgender:

Tier vögel = new Tier("Vögel");

Damit wird der String Vögel mitgegeben. Nun sucht das Programm nach dem passenden Konstruktor in der Klasse Tier. Hier wird nach einer Methode gesucht, die Tier heißt und einen Parameter des Types String verarbeiten kann.

Der Name und die Parameter, welche die Methode bekommen kann, werden auch Signatur einer Methode genannt. Die Signatur muss immer eindeutig sein, das bedeutet, sie darf es nur einmal in einer Klasse geben. Wenn du mehr von Java Methoden und deren Signatur wissen möchtest, dann schau dir doch unser Video zu den Java Methoden%VERweis an.

In unserem Beispiel würde der Konstruktor sich wie folgt verändern:

public class Tier{

    private String art;
    private String name;

    public Tier(String art){
        this.art = art; 
    }
}

Das ist der zur Instanziierung passende Java Konstruktor. Damit kannst du einen String Wert bei der Instanziierung übergeben.

Mit dem Befehl:

this.art = art;

sorgst du lediglich dafür, dass die Variable art der Klasse von der zweiten Zeile gleich dem übergebenen Parameter art ist.

Überladen von Konstruktoren

Wie bei normalen Methoden %VERWEIS Java Methoden, kann auch die Konstruktormethode überladen werden. Schauen wir uns wieder ein Beispiel an. Angenommen du möchtest ein Objekt Vögel und ein Objekt Säugetiere programmieren. Weiterhin gehen wir davon aus, dass du den Namen, des Säugetiers schon kennst. Es soll ein Mensch sein. Von dem Vogel hingegen weißt du keinen Namen, weshalb die entsprechende Variable auf unbekannt gesetzt werden soll.

In Java kannst du das folgendermaßen instanzieren:

public class Mitmain{

    public static void main(String[] args){

        Tier vögel = new Tier("Vögel");
        Tier säugetier = new Tier("Säugetier", "Mensch");  

    }
}

Der Code für den Java Konstruktor könntest du so umsetzen:

public class Tier{

    private String art;
    private String name;

    //Konstruktor I
    public Tier(String art){
        this.art = art;
        this.name = "unbekannt";  
    }
    //Konstruktor II
    public Tier(String art, String name){
        this.art = art; 
        this.name = name; 
    }
}

Damit hättest du deinen Konstruktor überladen. Du benutzt zweimal den gleichen Methodenaufruf, in dem Fall Tier(), jedoch durch die unterschiedlichen Parameter zwei unterschiedliche Signaturen. Deshalb wird für die Vögel der erste und für das Säugetier der zweite Konstruktor angesprochen.

Mit der Referenz this. zeigst du dem Programm an, dass du dich auf eine Klassenvariable beziehst. Also die Variable, die du am Anfang der Klasse %VERWEIS auf Java Klasse im Bereich der Eigenschaften und Attribute deklariert hast.

Verketteter Konstruktor mit this

Nun kannst du nicht nur Java Konstruktoren einzeln ansprechen, sondern auch miteinander verketten. Dies funktioniert mit dem Aufruf this(). Du musst allerdings drauf aufpassen, dass so ein Aufruf zum verketten, die erste Anweisung in einem Konstruktor sein muss.

Die Verkettung benutzt du, um in deinem Programm keinen überflüssigen Code zu haben und nichts zweimal schreiben zu müssen. Wenn du unseren Konstruktor I und II anschaust, erkennst du, dass hier eigentlich zweimal das gleiche passiert. Es werden die Variablen Art und Name mit unterschiedlichen Parametern belegt.

Das könntest du jetzt durch eine Verkettung wie folgt vereinfachen:

public class Tier{

    private String art;
    private String name;

    //Konstruktor I
    public Tier(String art){
        this(art, "unbekannt");
    }

    //Konstruktor II
    public Tier(String art, String name){
        this.art = art;
        this.name = name;
    }
}

Die Main-Methode und der Aufruf zur Klasseninstanziierung bleibt dabei der Gleiche.

Vorausgesetzt, du weißt die Art deines Tieres, welches du programmieren möchtest. Der Name ist dir aber anfangs unbekannt. So rufst du bei der Instanziierung den Java Konstruktor I auf und übergibst den String-Wert art. In unserem oberen Beispiel wäre das

Tier vögel = new Tier("Vögel");

Nun verweist der Konstruktor I durch den  this(art, "unbekannt"); Aufruf auf den Konstruktor II. Dabei gibt der Aufruf den String unbekannt für den zweiten Konstruktor mit. Das entspricht dann dem Namen des Tieres, welche dem Parameter name übergeben wird. Denn name ist der zweite Parameter des Konstruktors II.

So hast du zwei Konstruktoren miteinander verknüpft und keinen Programmcode doppelt geschrieben.


Andere Nutzer halten diese Inhalte aus dem Bereich „Java“ für besonders klausurrelevant

Hallo, leider nutzt du einen AdBlocker.

Auf Studyflix bieten wir dir kostenlos hochwertige Bildung an. Dies können wir nur durch die Unterstützung unserer Werbepartner tun.

Schalte bitte deinen Adblocker für Studyflix aus oder füge uns zu deinen Ausnahmen hinzu. Das tut dir nicht weh und hilft uns weiter.

Danke!
Dein Studyflix-Team

Wenn du nicht weißt, wie du deinen Adblocker deaktivierst oder Studyflix zu den Ausnahmen hinzufügst, findest du hier eine kurze Anleitung. Bitte lade anschließend die Seite neu.