toString()-Methode
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 41 von 87.
Jede Klasse in Java erbt von der Object-Klasse, die mehrere nützliche Methoden bereitstellt. Eine der am häufigsten überschriebenen ist toString(), die eine String-Repräsentation eines Objekts zurückgibt.
Standardmäßig gibt toString() den Klassennamen gefolgt vom Hash-Code des Objekts zurück, was nicht sehr hilfreich ist:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person@15db9742Durch das Überschreiben von toString() können Sie eine aussagekräftige Ausgabe bereitstellen, die den Zustand des Objekts beschreibt:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person[name=" + name + ", age=" + age + "]";
}
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person[name=Alice, age=25]Die Methode toString() wird automatisch aufgerufen, wenn Sie ein Objekt ausgeben oder es mit einer Zeichenfolge verknüpfen. Dies macht das Debugging viel einfacher, da Sie den Inhalt eines Objekts schnell sehen können, ohne zusätzlichen Code schreiben zu müssen.
Aufgabe
EinfachLassen Sie uns ein Produktinventarsystem erstellen, das mithilfe benutzerdefinierter toString()-Implementierungen aussagekräftige Informationen über Artikel anzeigt. Sie werden eine Product-Klasse erstellen, die die standardmäßige toString()-Methode überschreibt, um eine klare, lesbare Darstellung jedes Produkts zu liefern.
Sie werden Ihren Code auf zwei Dateien verteilen:
Product.java: Erstellen Sie eine Klasse, die einen Inventarartikel darstellt. Jedes Product hat drei private Felder:name(String),price(double) undquantity(int). Fügen Sie einen Konstruktor hinzu, der alle drei Felder initialisiert. Überschreiben Sie dietoString()-Methode, um einen formatierten String in genau diesem Format zurückzugeben:Product[name=X, price=Y, quantity=Z], wobei X, Y und Z die tatsächlichen Feldwerte sind. Der Preis sollte als einfache Zahl angezeigt werden (keine spezielle Formatierung erforderlich).Main.java: Erwecken Sie Ihre Product-Klasse zum Leben, indem Sie Produkte erstellen und anzeigen. Sie erhalten drei Eingaben: einen Produktnamen (String), einen Preis (double) und eine Menge (int). Erstellen Sie ein Product mit diesen Werten und geben Sie das Produktobjekt dann einfach direkt mitSystem.out.println()aus. Dank Ihrer überschriebenentoString()-Methode wird dies automatisch die formatierten Produktinformationen anstelle der kryptischen Standardausgabe anzeigen!
Sie erhalten drei Eingaben: den Produktnamen (String), den Preis (double) und die Menge (int).
Beachten Sie, wie das direkte Drucken des Objekts automatisch Ihre toString()-Methode aufruft – das ist es, was das Debugging und Logging in realen Anwendungen so viel einfacher macht!
Spickzettel
Jede Klasse in Java erbt von der Object-Klasse. Die toString()-Methode gibt eine String-Repräsentation eines Objekts zurück.
Standardmäßig gibt toString() den Klassennamen gefolgt vom Hash-Code des Objekts zurück:
Person p = new Person("Alice", 25);
System.out.println(p); // Person@15db9742Überschreiben Sie toString(), um eine aussagekräftige Ausgabe zu erhalten:
@Override
public String toString() {
return "Person[name=" + name + ", age=" + age + "]";
}
Person p = new Person("Alice", 25);
System.out.println(p); // Person[name=Alice, age=25]Die toString()-Methode wird automatisch aufgerufen, wenn Sie ein Objekt ausgeben oder es mit einem String verketten.
Probier es selbst
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Eingaben lesen
String name = scanner.nextLine();
double price = scanner.nextDouble();
int quantity = scanner.nextInt();
// TODO: Erstelle ein Product-Objekt mit den Eingabewerten
// TODO: Gib das Product-Objekt direkt aus
// (Dies wird automatisch deine toString()-Methode aufrufen!)
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas this-SchlüsselwortMethodenFelder (Attribute)Konstruktor-MethodeKonstruktor-ÜberladungRückblick – Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (extends)Das super-SchlüsselwortMethoden überschreiben (@Override)Konstruktor-VerkettungDie Object-KlasseEinfache & mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-InterfaceZusammenfassung – Benutzerdefiniertes Sortieren2Zugriffsmodifikatoren & Kapselung
Überblick über ZugriffsebenenGetter- und Setter-MethodenInformation HidingDas final-SchlüsselwortRückblick – Bankkonto-Manager5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenZusammenfassung – Formenrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, geschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Sealed Classes (Java 17+)11Design Patterns Teil 1
Einführung in Design PatternsSingleton-PatternFactory-PatternBuilder-PatternObserver-PatternStrategy-Pattern14Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung3Klasseneigenschaften & Statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Zusammenfassung – Zähler & Utility6Interfaces & Abstrakte Klassen
Einführung in InterfacesInterfaces implementierenImplementierung mehrerer InterfacesDefault- & statische Methoden in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesZusammenfassung - Zahlungssystem