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) odernull(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
}
Konstruktoren — die Startwerte setzen
- Aufgabe:läuft genau einmal bei
newund 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)public Pflanze(name: Zeichenkette)public Pflanze(String name)String.public Pflanze(String name) { this.name = name; }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.
Deine Vorhersage für das Objekt p
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.
Konstruktor: public Klasse(typ p) { this.attribut = p; } — gleicher Name wie die Klasse, kein Rückgabetyp.
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.
