MINT lernen

Attribute und Konstruktoren

Eine frisch erzeugte Pflanze — ist sie schon 12 cm hoch, oder steht da noch 0?

1

Attribute — was jedes Objekt speichert

  • Ort:in der Klasse, aber außerhalb jeder Methode.
  • private:nur die eigene Klasse darf direkt darauf zugreifen.
  • Eigene Kopie:jedes Objekt hat seinen eigenen Satz Attribute — zwei Pflanzen, zwei Höhen.
  • Standardwerte:nicht gesetzte Attribute haben automatisch 0 (int), 0.0 (double), false (boolean) oder null (String und andere Objekte).
  • Lokale Variable:steht in einer Methode, lebt nur dort und hat keinen Standardwert.
public class Pflanze {
    private String name;       // Standardwert null
    private int hoehe;         // Standardwert 0
    private boolean gegossen;  // Standardwert false
}
2

Konstruktoren — die Startwerte setzen

  • Aufgabe:läuft genau einmal bei new und setzt die Startwerte.
  • Kopf:heißt exakt wie die Klasse und hat keinen Rückgabetyp, nicht einmal void.
  • this:this.name = name; — links das Attribut des Objekts, rechts der Parameter.
  • Überladen:mehrere Konstruktoren mit verschiedenen Parameterlisten; Java wählt den passenden.
  • Standardkonstruktor:nur wenn du keinen eigenen schreibst, gibt es automatisch new Pflanze().

Herleitung:

c Pflanze(name: Zeichenkette)
| c → public
Start: der Konstruktor im Klassendiagramm.
public Pflanze(name: Zeichenkette)
| Typ nach vorn
Kein Rückgabetyp — der Name ist der Klassenname.
public Pflanze(String name)
| Rumpf ergänzen
Zeichenkette wird String.
public Pflanze(String name) { this.name = name; }
Ergebnis
Der Parameter wird ins Attribut übernommen; hoehe und gegossen behalten ihre Standardwerte.

Wähle oben einen Fall. Sage vorher, was nach der new-Zeile im Objekt steht — oder ob javac die Zeile ablehnt. Dann „Vorhersage festlegen“ und mit „Schritt“ Zeile für Zeile durch den Konstruktor gehen.

Was steht im Objekt?

Deine Vorhersage für das Objekt p

gegossen =
0 von 6 Fällen richtig vorhergesagt

Halte fest: Bei new bekommt jedes Attribut zuerst seinen Standardwert, danach läuft der Konstruktor. Was er nicht setzt, bleibt 0, false oder null — und ohne this landet der Wert nie im Attribut.

Merke

Konstruktor: public Klasse(typ p) { this.attribut = p; } — gleicher Name wie die Klasse, kein Rückgabetyp.

3

Allgemeine Hinweise

void macht ihn kaputt

Mit public void Pflanze(String name) entsteht eine gewöhnliche Methode, kein Konstruktor — new Pflanze("Farn") klappt dann nicht mehr.

this vergessen

hoehe = hoehe; weist den Parameter sich selbst zu. Das Attribut bleibt 0 — ohne jede Fehlermeldung.

Eigener Konstruktor ersetzt den leeren

Sobald du einen Konstruktor schreibst, fällt new Pflanze() weg. Brauchst du ihn trotzdem, schreibe ihn zusätzlich.

Videos