toString()-Methode
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 41 von 87.
Jede Klasse in Java erbt von der Klasse Object, die mehrere nützliche Methoden bereitstellt. Eine der am häufigsten überschriebenen Methoden ist toString(), die eine Zeichenfolgendarstellung eines Objekts zurückgibt.
Standardmäßig gibt toString() den Klassennamen gefolgt vom Hashcode des Objekts zurück, was nicht besonders 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@15db9742Indem du toString() überschreibst, kannst du 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 du ein Objekt ausgibst oder es mit einer Zeichenkette verknüpfst. Das erleichtert das Debuggen erheblich, da du den Inhalt eines Objekts schnell sehen kannst, ohne zusätzlichen Code zu schreiben.
Aufgabe
EinfachErstellen wir ein Produktinventarsystem, das mithilfe benutzerdefinierter toString()-Implementierungen aussagekräftige Informationen zu Artikeln anzeigt. Du erstellst eine Product-Klasse, die die standardmäßige toString()-Methode überschreibt, um eine klare, gut lesbare Darstellung jedes Produkts bereitzustellen.
Du organisierst deinen Code auf zwei Dateien verteilt:
Product.java: Erstelle eine Klasse, die einen Inventarartikel repräsentiert. Jedes Product verfügt über drei private Felder:name(String),price(double) undquantity(int). Füge einen Konstruktor hinzu, der alle drei Felder initialisiert. Überschreibe dietoString()-Methode so, dass sie eine formatierte Zeichenkette in genau diesem Format zurückgibt:Product[name=X, price=Y, quantity=Z], wobei X, Y und Z die tatsächlichen Feldwerte sind. Der Preis soll als einfache Zahl angezeigt werden (eine spezielle Formatierung ist nicht erforderlich).Main.java: Erwecke deine Product-Klasse zum Leben, indem du Produkte erstellst und anzeigst. Du erhältst drei Eingaben: einen Produktnamen (String), einen Preis (double) und eine Menge (int). Erstelle mit diesen Werten ein Product und gib anschließend das Produktobjekt direkt mitSystem.out.println()aus. Dank deiner überschriebenentoString()-Methode werden dadurch automatisch die formatierten Produktinformationen anstelle der kryptischen Standardausgabe angezeigt!
Du erhältst drei Eingaben: den Produktnamen (String), den Preis (double) und die Menge (int).
Beachte, dass das direkte Ausgeben des Objekts automatisch deine toString()-Methode aufruft. Genau das macht das Debuggen und Protokollieren in realen Anwendungen so viel einfacher!
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 ruft automatisch deine toString()-Methode auf!)
}
}
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 Schlüsselwort thisMethodenFelder (Attribute)KonstruktormethodeÜberladen von KonstruktorenRückblick – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbung (extends)Das Schlüsselwort superÜberschreiben von Methoden (@Override)KonstruktorverkettungDie Object-KlasseEinfach- und mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenRückblick – Mitarbeiterhierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-SchnittstelleRückblick – Benutzerdefinierte Sortierung2Zugriffsmodifikatoren & Kapselung
Übersicht der ZugriffsebenenGetter- und Setter-MethodenInformationsverbergungDas Schlüsselwort finalRückblick – Bankkontoverwaltung5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, verschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Versiegelte Klassen (Java 17+)11Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBuilder-MusterObserver-MusterStrategie-Muster14Abschließende Herausforderungen
E-Learning-PlattformBankingsystemEntwicklung einer SpielfigurFahrzeugvermietungsdienst3Klassen-Props & statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Wiederholung – Counter & Utility6Schnittstellen & abstrakte Klassen
Einführung in InterfacesInterfaces implementierenMehrere Interfaces implementierenDefault & Static in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesRückblick – ZahlungssystemÜbe selbstständig: Online-Java-Compiler