Konstruktor mit und ohne Parameterliste

ChrSli5385

Mitglied
Hallo liebe Java Profis, ich bin gerade ehrlich gesagt etwas verwirrt. Kennengelernt habe ich den Konstruktor wie folgt:

public class Mensch {

int alter;
String Haarfarbe;

//nun der Konstruktor - hier mit Parameterliste??


public void mensch(int alter; String haarfarbe) {
this.alter = alter;
this.haarfarbe = haarfarbe;
}
//nun einen Konstruktor ohne Parameterliste??

public void mensch(int pAlter,String pHaarfarbe){
pAlter = alter;
pHaarfarbe = haarfarbe;


}

kennengelernt habe ich nur den ersten Fall, in einer weiteren Aufgabe heißt es nun dass man einen Konstruktor mit und einmal ohne Parameterliste erzeugen soll. Habe ich es in diesem Fall richtig gemacht?? Und selbst wenn verstehe ich nicht so ganz wozu das Ganze dienen soll. Wäre echt super wenn mir dies jJemand beantworten könnte, würde den Unterschied gerne verstehen. Vielen Dank im Voraus für eine Antwort 🙂
 
Beachte:

Der Konstruktor heißt so wie die Klasse (Groß-/Kleinschreibung!)

Auf den Sichtbarkeitsmodifikator (public, private) folgt direkt der Name des Konstruktors.

Ohne Parameter:
Java:
public Mensch() {}

bzw. sollte dann im parameterlosen Konstruktor eine sinnvolle Vorbelegung erfolgen:
Java:
public Mensch() {
    this.alter = 18;
    this.haarfarbe = "schwarz";
}

oder indem du im parameterlosen Konstruktor den zweiten Konstruktor aufrufst:
Java:
public Mensch() {
    this(18, "schwarz");
}
 
Zuletzt bearbeitet:
1. Keiner deiner beiden Methoden ist ein Konstruktor. Es sind Methoden mit void Rückgabetyp
2. Die erste Methode hat einen Syntaxfehler in der Parameterliste (Semikolon statt Komma)
3. Die Zuweisung `this.haarfarbe = haarfarbe` ist falsch, da das Attribut der Klasse nicht `haarfarbe` sondern `Haarfarbe` heißt.
4. Die Zuweisung `pAlter = alter` macht absolut keinen Sinn, da du hier den übergebenen Parameter `pAlter` mit dem mit 0 defaultmäßig vorinitialisierten Attribut (der Instanzvariablen) `alter` überschreibst. Das hat keinen Effekt.
5. Ebenso macht die nachfolgende Zuweisung `pHaarfarbe = haarfarbe` keinen Sinn, die auch noch einen Compilefehler drin hat (Casing von Haarfarbe!).
 
Danke für die schnellen Antworten, den ersten Fall haben wir nunmal als Konstruktor kennengelernt httpdiqest. Danke Temi, Groß-/Kleinschreibung werde ich ab jetzt beachten!
 
Spätestens bei einem Mensch mensch = new Mensch(18, "schwarz") wirst du bemerken, dass es keiner ist.
wir sind noch so ziemlich am Anfang... Uns wurde gesagt dass ein Konstruktor dazu dient einem neuen Objekt direkt Werte zuweisen zu können?? (Verwirrung 😀) . Anbei eine weitere Frage, wann sprechen wir dann von einem Konstruktor? Und wann ist dieser nicht mehr ohne Parameterliste?
 
Du willst damit sagen, dass euch exakt dieser Code:
Java:
public void mensch(int alter; String haarfarbe) {...}
als Konstruktor verkauft wurde? Ich vermute mal eher, dass du da falsch mitgeschrieben hast. 🙂
wohl möglich 🙁... sollte ich vielleicht nur das "void" weglassen?? Sprechen wir dann von einem Konstruktor oder was genau ist jetzt mein Fehler, mal abgesehen von Schreibfehlern
 
Uns wurde gesagt dass ein Konstruktor dazu dient einem neuen Objekt direkt Werte zuweisen zu können?
Stimmt. Im Beispiel sind dies das Alter und die Haarfarbe.
Und ein parameterloser Konstruktor wird verwendet, um die Klasse sinnvoll zu initialisieren.
Und wann ist dieser nicht mehr ohne Parameterliste?
Wenn er Parameter hat.
sollte ich vielleicht nur das "void" weglassen?? Sprechen wir dann von einem Konstruktor
Der Konstruktor heißt so wie die Klasse (Groß-/Kleinschreibung!)

Auf den Sichtbarkeitsmodifikator (public, private) folgt direkt der Name des Konstruktors.
 
Auf den Sichtbarkeitsmodifikator (public, private) folgt direkt der Name des Konstruktors. Und dann sprechen wir von einem Konstruktor. Gut, danke. Und wann ist dieser nicht mehr ohne Parameterliste? Wenn er Parameter hat.... Bin dankbar für jede Antwort, bitte nicht falsch verstehen, aber viel anfangen kann ich damit leider nicht, ist fast so als wenn ich einen Begriff mit dem gleichen Begriff erkläre, ein kurzes Beispiel wäre echt toll
 
Ich weiß jetzt nicht was am Begriff "Parameter" so schwer zu verstehen ist, aber bitte:

Java:
class Foo {
    private int value; 

    // parameterloser Konstruktor
    public Foo() {
        this.value = 100;
    }

    // Konstruktor mit einem Parameter
    public Foo(int value) {
        this.value = value;
    }
}

Verwendung:
Java:
// erzeugt eine Instanz von Foo mit value = 100
Foo foo1 = new Foo();

// erzeugt eine Instanz von Foo mit value = 42
Foo foo2 = new Foo(42);
 

Zurück
Oben