CodeGym /Java Kurs /Java Syntax /So legt man Objekte an

So legt man Objekte an

Java Syntax
Level 5 , Lektion 4
Verfügbar

„Okay. Letztes Mal haben wir uns mit Klassen beschäftigt. Heute möchte ich dir erklären, wie man Objekte erstellt. Das ist ganz einfach. Du schreibst das Schlüsselwort new und dann den Namen der Klasse, von der du ein Objekt anlegen möchtest.“

Beispiel
Cat cat = new Cat();
Reader reader = new BufferedReader(new InputStreamReader(System.in));
InputStream is = new FileInputStream(path);

„Das weiß ich doch schon.“

„Ich weiß, dass du das tust. Hör weiter zu.“

„Beim Anlegen eines Objekts kannst du verschiedene Parameter in Klammern übergeben. Darüber erfährst du später mehr. Werfen wir zuerst einen Blick auf die Katze-Klasse:“

Java-Code Beschreibung
class Cat {
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
name ist eine Instanzvariable. Sie verfügt über den public-Zugriffsmodifikator, der sie überall im Projekt sichtbar macht.

Die Methode nameAbrufen ist eine Abfragemethode. Sie gibt den Wert der Instanzvariable name zurück. Der Name der Methode wurde aus der Bezeichnung der Variablen und dem Wort „Abrufen“ mit einem Großbuchstaben gebildet.

Die Methode nameFestlegen ist eine Änderungsmethode. Sie wird verwendet, um der Instanzvariable name einen neuen Wert zuzuweisen. Der Name der Methode wurde aus der Bezeichnung der Variablen und dem Wort „Festlegen“ mit einem Großbuchstaben gebildet. Bei dieser Methode hat der Parameter den gleichen Namen wie die Instanzvariable, so dass wir dem Namen der Instanzvariablen das Wort this voranstellen.

„Was sind diese Abfrage- und Änderungsmethoden?“

„In Java ist es üblich, Variablen vor anderen Klassen zu verbergen. Normalerweise besitzen Variablen, die innerhalb von Klassen deklariert sind, den private-Modifikator.

„Damit andere Klassen den Wert dieser Variablen ändern können, wird für jede von ihnen ein Methodenpaar erstellt: die Abfragemethode und die Änderungsmethode. Die Abfragemethode gibt den aktuellen Wert der Variablen zurück. Die Änderungsmethode legt einen neuen Wert für die Variable fest.

„Und was soll das bringen?“

„Wenn wir nicht wollen, dass jemand den Wert einer Instanzvariablen ändert, können wir einfach keine Änderungsmethode dafür erstellen oder sie private machen. Wir können der Methode außerdem zusätzliche Datenprüfungen hinzufügen. Wenn der übergebene neue Wert ungültig ist, wird nichts verändert.“

„Ach so.“

„Da eine Klasse sehr viele Variablen besitzen kann, enthalten die Namen der Abfrage- und Änderungsmethoden normalerweise die Namen der Variablen, mit denen sie sich befassen.“

„Wenn eine Variable ‚name‘ heißt, dann werden die Methoden nameAbrufen und nameFestlegen usw. genannt.“

„Ach so. Klingt nachvollziehbar.“

„Hier sind ein paar weitere Beispiele für die Arbeit mit einem neu erstellten Objekt:“

Schritt Code Beschreibung
1
new Cat();
Erstelle ein Cat-Objekt
2
Cat catOscar = new Cat();
Speichere ein Cat-Objekt in der Variable catOscar
3
catOscar.name = "Oscar";
catOscar.age = 6;
catOscar.weight = 4;
Befülle das Objekt mit Daten: Name, Alter, Gewicht
4
catOscar.sleep();
Rufe eine Methode des Objekts auf
5
catOscar.fight(catSmudge);
Sorge dafür, dass die Objekte interagieren.
Kommentare (4)
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION
Daniel Ritter Level 17, Augsburg, Deutschland
6 April 2021
Trotz deutscher Übersetzung würde ich die Methoden dennoch getMember() und setMember(...) nennen. Getter und Setter sind Standard, auch in anderen Sprachen als Englisch.

private int beliebigeZahl = 0;
public void setBeliebigeZahl(int beliebigeZahl) {
    this.beliebigeZahl = beliebigeZahl;
}
public int getBeliebigeZahl() {
    return beliebigeZahl;
}
Liest sich mit dem deutschen Namen vielleicht etwas ungewohnt... Sollte aber so verwendet werden.
John Squirrels Level 41, San Francisco, Poland
8 April 2021
In diesem Moment haben wir beschlossen, den ganzen Kurs samt allen Klassen - und Methodennamen ins Deutsche zu übersetzen. in der Zukunft wäre es viel besser, die Namen der Klasssen und Methoden auf Englisch zu verwenden.
Sneaky One Level 5, Germany, Germany
14 Dezember 2021
Ist ja sehr löblich, dass ihr alles ins Deutsche übersetzen wollt, aber hier macht das wirklich wenig Sinn. Man spricht in Deutschland ja auch von Setter- und Getter-Methoden. Und um international kommunizieren zu können, sollte man bei grundlegenden Themen schon bei den Anglizismen bleiben!
Octavian_The_I Level 8, Munich, Germany
13 Januar 2020
why would you use nameAbrufen und nameFestlegen, and then change it to getName and setName? a small inconvinience but an annoying one)