Menu
Coddy logo textTech

Metoda toString()

Część sekcji Programowanie obiektowe ścieżki Java w Coddy. Lekcja 41 z 87.

Każda klasa w Javie dziedziczy po klasie Object, która udostępnia kilka przydatnych metod. Jedną z najczęściej przesłanianych jest toString(), która zwraca tekstową reprezentację obiektu.

Domyślnie toString() zwraca nazwę klasy, po której następuje kod skrótu obiektu, co nie jest zbyt pomocne:

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@15db9742

Nadpisując toString(), możesz zapewnić znaczący wynik, który opisuje stan obiektu:

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]

Metoda toString() jest wywoływana automatycznie, gdy drukujesz obiekt lub łączysz go z ciągiem znaków. Dzięki temu debugowanie jest znacznie łatwiejsze, ponieważ możesz szybko zobaczyć zawartość obiektu bez pisania dodatkowego kodu.

challenge icon

Wyzwanie

Łatwy

Zbudujmy system inwentaryzacji produktów, który wyświetla przydatne informacje o przedmiotach za pomocą niestandardowych implementacji metody toString(). Utworzysz klasę Product, która nadpisuje domyślną metodę toString(), aby zapewnić czytelną reprezentację każdego produktu.

Rozmieścisz swój kod w dwóch plikach:

  • Product.java: Utwórz klasę reprezentującą przedmiot w magazynie. Każdy produkt ma trzy prywatne pola: name (String), price (double) i quantity (int). Dodaj konstruktor, który inicjalizuje wszystkie trzy pola. Nadpisz metodę toString(), aby zwracała sformatowany ciąg znaków w dokładnie takim formacie: Product[name=X, price=Y, quantity=Z], gdzie X, Y i Z to rzeczywiste wartości pól. Cena powinna być wyświetlana jako zwykła liczba (nie trzeba jej specjalnie formatować).
  • Main.java: Ożyw swoją klasę Product, tworząc i wyświetlając produkty. Otrzymasz trzy dane wejściowe: nazwę produktu (String), cenę (double) i ilość (int). Utwórz obiekt Product z tymi wartościami, a następnie po prostu wyświetl bezpośrednio obiekt produktu za pomocą System.out.println(). Dzięki nadpisanej metodzie toString() automatycznie wyświetlą się sformatowane informacje o produkcie zamiast nieczytelnego domyślnego wyniku!

Otrzymasz trzy dane wejściowe: nazwę produktu (String), cenę (double) i ilość (int).

Zauważ, że bezpośrednie wyświetlenie obiektu automatycznie wywołuje metodę toString(). Dzięki temu debugowanie i rejestrowanie informacji w rzeczywistych aplikacjach jest znacznie łatwiejsze!

Spróbuj swoich sił

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Wczytaj dane wejściowe
        String name = scanner.nextLine();
        double price = scanner.nextDouble();
        int quantity = scanner.nextInt();
        
        // TODO: Utwórz obiekt Product z wartościami wejściowymi
        
        // TODO: Wypisz bezpośrednio obiekt produktu
        // (To automatycznie wywoła Twoją metodę toString()!)
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Java online