Weshalb 2 Constructors?

RezaScript

Bekanntes Mitglied
Hallo,

ich folge grad ein Tutorial und verstehe nicht weshalb 2 Constructors erstellt werden. Die Klasse sieht so aus:

Java:
public class User {
    private int id;
    private String name;
    private String email;

    public User(int id, String name, String email) {
        this.id = id;
        this.name = name;
        this.email = email;
    }

    public User() {}

    // All Getters and Setters
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Kann mir das jemand erklären?
 
K

kneitzel

Gast
Die Klasse hat jetzt zwei Konstruktoren:
Du kannst einen User zum einen ohne jeden Parameter erstellen oder Du nutzt den Konstruktor und hast dann einen komplett initialisierten User.

Wieso? Das ist ohne Nutzung nicht zu sagen. Ohne Nutzung wäre die Frage sogar: Wozu diese Klasse? Wird ja nicht genutzt.

Generell ergibt sich die Notwendigkeit durch die Nutzung / Anforderungen.
 

temi

Top Contributor
Vielleicht noch ein paar ergänzende Sachen:

Wird eine Klasse ganz ohne Konstruktor erstellt, dann erhält sie automatisch den Standardkonstruktor (das ist der zweite in der Klasse oben).

Sobald du einen eigenen Konstruktor erstellst (z.B. den ersten in der Klasse oben), dann gibt es auch nur noch diesen. Der Standardkonstruktor wird dann nicht mehr automatisch erzeugt.

Möchtest du trotzdem noch (insofern die Anwendung der Klasse das erfordert) einen Standardkonstruktor zusätzlich haben, dann musst du diesen auch zusätzlich angeben (genau wie in der Klasse oben).

Wie du siehst hat der Standardkonstruktor keine Parameter. Die Instanzvariablen einer damit erzeugten Instanz sind sozusagen leer (stimmt nicht ganz, weil es vom Datentyp abhängt).

Da es selten sinnvoll ist eine Klasse zu erzeugen, die man nicht nutzen kann, ist auch der Standardkonstruktor meist nicht sinnvoll. Das Ziel sollte immer sein eine Instanz sinnvoll zu initialisieren und das geht über einen eigenen Konstruktor mit Parametern.
 

Neue Themen


Oben