Metodo toString()
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 41 di 87.
Ogni classe in Java eredita dalla classe Object, che fornisce diversi metodi utili. Uno dei metodi più comunemente sovrascritti è toString(), che restituisce una rappresentazione in forma di stringa di un oggetto.
Per impostazione predefinita, toString() restituisce il nome della classe seguito dal codice hash dell'oggetto, il che non è molto utile:
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@15db9742Sovrascrivendo toString(), puoi fornire un output significativo che descrive lo stato dell'oggetto:
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]Il metodo toString() viene chiamato automaticamente quando stampi un oggetto o lo concateni con una stringa. Questo rende il debug molto più semplice, perché puoi vedere rapidamente il contenuto di un oggetto senza scrivere codice aggiuntivo.
Sfida
FacileCostruiamo un sistema di inventario dei prodotti che mostri informazioni significative sugli articoli usando implementazioni personalizzate di toString(). Creerai una classe Product che esegue l'override del metodo predefinito toString() per fornire una rappresentazione chiara e leggibile di ogni prodotto.
Organizzerai il codice in due file:
Product.java: Crea una classe che rappresenti un articolo di inventario. Ogni Product ha tre campi privati:name(String),price(double) equantity(int). Includi un costruttore che inizializzi tutti e tre i campi. Esegui l'override del metodotoString()per restituire una stringa formattata esattamente in questo formato:Product[name=X, price=Y, quantity=Z], dove X, Y e Z sono i valori effettivi dei campi. Il prezzo deve essere mostrato come un semplice numero (non è necessaria una formattazione speciale).Main.java: Dai vita alla tua classe Product creando e mostrando dei prodotti. Riceverai tre input: il nome di un prodotto (String), un prezzo (double) e una quantità (int). Crea un Product con questi valori, poi stampa semplicemente direttamente l'oggetto prodotto usandoSystem.out.println(). Grazie al metodotoString()di cui hai eseguito l'override, verranno mostrate automaticamente le informazioni formattate del prodotto invece dell'output predefinito poco chiaro!
Riceverai tre input: il nome del prodotto (String), il prezzo (double) e la quantità (int).
Nota come stampare direttamente l'oggetto richiami automaticamente il tuo metodo toString(). È questo che rende il debugging e la registrazione degli eventi molto più semplici nelle applicazioni reali!
Provalo tu
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Lee las entradas
String name = scanner.nextLine();
double price = scanner.nextDouble();
int quantity = scanner.nextInt();
// TODO: Crea un objeto Product con los valores de entrada
// TODO: Imprime directamente el objeto product
// (¡Esto llamará automáticamente a tu método toString()!)
}
}
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione a oggetti
File esterniIntroduzione alla programmazione a oggettiClassi e oggettiLa parola chiave thisMetodiCampi (attributi)Metodo costruttoreSovraccarico dei costruttoriRipasso - Calcolatrice semplice4Ereditarietà
Ereditarietà di base (extends)La parola chiave superSovrascrittura dei metodi (@Override)Concatenamento dei costruttoriLa classe ObjectEreditarietà singola e multilivelloPerché non esiste l'ereditarietà multipla delle classiRiepilogo: gerarchia dei dipendenti7Metodi speciali e classe Object
Metodo toString()equals() e hashCode()Metodo clone()compareTo() e ComparableInterfaccia ComparatorRiepilogo - Ordinamento personalizzato2Modificatori di accesso e incapsulamento
Panoramica dei livelli di accessoMetodi getter e setterNascondimento delle informazioniLa parola chiave finalRiepilogo - Gestore di conti bancari5Polimorfismo
Nozioni di base sull'overloading dei metodiOverride dei metodi (a runtime)Upcasting e downcastingL'operatore instanceofClassi e metodi astrattiRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàAggregazione vs composizioneClassi interne, annidate e anonimeEnum e metodi degli EnumRecord (Java 16+)Classi sealed (Java 17+)11Modelli di progettazione Parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern BuilderPattern ObserverPattern Strategy3Proprietà di classe e membri statici
Variabili di istanza e staticheMetodi staticiBlocchi staticiCostanti (static final)Riepilogo - Contatore e utility6Interfacce e classi astratte
Introduzione alle interfacceImplementazione delle interfacceImplementazione di più interfacceMetodi default e static nelle interfacceClassi astratte e interfacce a confrontoInterfacce funzionaliRiepilogo: sistema di pagamento9Tipi generici
Introduzione ai tipi genericiClassi genericheMetodi genericiParametri di tipo con limitiCaratteri jolly (?, extends, super)Riepilogo - Contenitore generico12Modelli di progettazione – Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern IteratorEsercitati da solo: Compilatore Java online