Objekte in Java
Schreibe eine Klasse namens Chip in Chip.java mit einer Methode beep, die ok druckt. Die Methode ist auf dieser Seite nicht static. In einer zweiten Datei Bench.java baue einen Chip mit Chip c = new Chip();, dann rufe c.beep(); auf. Kompiliere beide Dateien und starte java Bench. Der Bildschirm soll eine Zeile zeigen: ok. Das Wort new baut ein Objekt aus der Klasse. Die Variable c hält dieses Objekt. Du rufst beep auf c auf, nicht auf dem bloßen Klassennamen. Genau dieses gebaute Objekt — und der Aufruf darüber — ist der Lehrstoff dieser Seite.
Ein Objekt aus der Klasse
Eine Klasse ist weiterhin der benannte Typ. Ein Objekt ist ein Wert, der aus diesem Typ gebaut wird. Die Zeile new Chip() bittet Java, diesen Wert zu bauen. Du speicherst ihn in einer Variable vom Typ Chip und nutzt die Variable, um Methoden zu erreichen, die zu jedem Objekt gehören.
Erstelle zuerst Chip.java. Die public-class-Zeile ist public class Chip. Lass keinen älteren Klassennamen Badge oder Desk in dieser Datei. Innerhalb der Klammern schreibe void beep() — kein Wort static in diesem Kopf. Der Rumpf ist ein Druck: System.out.println("ok");. Behalte void. Die Methode gibt keine Zahl zurück. In Chip.java gibt es auf dieser Seite kein main. Speichere die Datei vor dem Kompilieren.
public class Chip {
void beep() {
System.out.println("ok");
}
}
Bench baut den Chip, dann ruft es beep auf
Erstelle Bench.java im selben Ordner. Die public-class-Zeile ist public class Bench. Innerhalb von main schreibe zwei Zeilen: zuerst Chip c = new Chip();, dann c.beep();. Die erste Zeile deklariert eine Variable c vom Typ Chip und füllt sie mit einem neuen Objekt. Die zweite Zeile ruft beep auf diesem Objekt auf. Der Punkt steht nach dem Variablennamen, nicht allein nach dem Klassennamen.
public class Bench {
public static void main(String[] args) {
Chip c = new Chip();
c.beep();
}
}
Aus dem Ordner mit beiden Dateien führe javac Chip.java Bench.java aus. Du kannst Chip.java zuerst und Bench.java danach kompilieren, wenn beide Dateien fertig sind. Wenn Klammern, geschweifte Klammern und Semikolons passen, schreibt javac keine eigene Zeile. Dann starte java Bench — nicht java Bench.java und nicht java Chip. Lass die Endung .java beim Startbefehl weg. Starte die Klasse, die main hält. Dieselben Befehle funktionieren unter Windows und macOS.
Das Programm soll eine Zeile drucken und stoppen: ok. Es soll nicht auf Eingabe warten. Wenn das Terminal auf Tastatur wartet, steckt noch ein nextLine-Aufruf aus einer älteren Übung in einer Datei. Lösche ihn und behalte Chip c = new Chip(); plus c.beep(); in Bench, mit beep in Chip.
Geh den Lauf einmal durch. Java startet bei Bench.main. Der Ausdruck new Chip() baut ein Objekt. Dieses Objekt wird in c gespeichert. Der Aufruf c.beep() betritt beep für dieses Objekt. Die Methode druckt ok und kehrt zurück. Dann endet Bench. Die Bildschirmzeile kam von der Methode des Objekts, nachdem new das Objekt erzeugt hat.
Denk an die Klasse als Bauplan auf der Platte und an das Objekt als ein gebautes Stück im Speicher für diesen Lauf. Du kompilierst den Bauplan einmal. Jedes new Chip() baut ein weiteres Stück. Die Variable benennt das Stück, damit spätere Zeilen es erreichen. Ohne diesen Namen bleibt auf dieser Seite kein Griff für beep.
Warum der Aufruf c nutzt, nicht Chip allein
Auf der Klassenseite konnte eine static-Methode als Badge.show() mit dem Typnamen aufgerufen werden. Hier hat beep kein Wort static. Java erwartet zuerst ein Objekt. Chip.beep(); ohne Objekt passt nicht zu dieser Anfängerform. Baue mit new, behalte das Ergebnis in einer Variable, rufe dann über diese Variable auf.
Wenn du nur new Chip(); schreibst und nie speicherst, hast du trotzdem ein Objekt gebaut, aber keinen Namen mehr für beep. Auf dieser Seite behalte die Variable: Chip c = new Chip(); dann c.beep();. Die Variable ist der Weg zum Objekt, nachdem new fertig ist.
Ein übrig gebliebenes static-Demo kann den Ordner verwirren. Eine Datei, die noch Badge.show(); aufruft, ist die Form der vorherigen Lektion. Für diese Seite behalte Chip und Bench und die new-Zeile. Du brauchst hier kein Badge.
Zwei Objekte, zwei Beeps
Du kannst aus derselben Klasse mehr als ein Objekt bauen. Jedes new Chip() macht ein eigenes Objekt. Jedes Objekt kann beep für sich ausführen. Der Klassentext ist gemeinsam; die Objekte sind nicht derselbe Wert.
public class Bench {
public static void main(String[] args) {
Chip a = new Chip();
Chip b = new Chip();
a.beep();
b.beep();
}
}
Kompiliere und starte erneut: javac Chip.java Bench.java, dann java Bench. Der Bildschirm soll zwei Zeilen zeigen: ok, dann ok. Die erste Zeile kam von a. Die zweite von b. Beide nutzten denselben beep-Methodentext in Chip, aber jeder Aufruf lief auf einem anderen Objekt, das mit new gebaut wurde.
Wenn der Bildschirm nur ein ok zeigt, prüfe, ob beide Aufrufe da sind und ob beide Variablen mit new gebaut wurden. Chip b = a; baut kein zweites Objekt; es lässt b auf dasselbe Objekt wie a zeigen. Diese Idee wartet auf spätere Seiten. Auf dieser Seite nutze zwei Ausdrücke new Chip(), wenn du zwei Objekte willst.
Was diese Seite für fields lässt
Diese Seite speichert noch keine Zahl oder kein Wort im Chip. Felder — Namen, die Daten auf jedem Objekt halten — sind die nächste Seite. Hier existiert das Objekt nach new, und die Instanzmethode beep druckt nur. Das reicht, um die Trennung zwischen Klasse als Typ und einem Objekt als gebautem Wert zu sehen.
Du kannst die Variable von c in unit umbenennen: Chip unit = new Chip(); dann unit.beep();. Der Bildschirm bleibt ok, wenn der Methodenkörper weiterhin dieses Wort druckt. Der Variablenname ist deiner; der Typname Chip und der Ausdruck new Chip() müssen weiterhin passen.
Wenn javac beim Kompilieren von Bench.java sagt, das Symbol Chip fehle, prüfe, dass Chip.java im selben Ordner liegt und die Klassenzeile wirklich public class Chip sagt. Wenn der Lauf nichts druckt, bestätige, dass main nach der new-Zeile noch c.beep(); aufruft und dass beep noch println enthält.
Vor fields
Du kannst Chip mit void beep() schreiben, ein Objekt mit Chip c = new Chip(); bauen und aus Bench c.beep(); aufrufen. Kompiliere beide Dateien und starte java Bench. Der Bildschirm zeigt ok. Ein zweites new Chip() baut ein weiteres Objekt, das selbst beepen kann. Die nächste Seite ist fields; dort beginnt jedes Objekt, eigene gespeicherte Daten zu halten.
🧠 Testen Sie Ihr Wissen
Testen Sie Ihr Wissen
Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen
📝 Anweisungen
- Lesen Sie jede Frage sorgfältig
- Wählen Sie die beste Antwort für jede Frage
- Sie können das Quiz so oft wiederholen, wie Sie möchten
- Ihr Fortschritt wird oben angezeigt