"Ciao, Amico!"
"CIAO!"
"Oggi studieremo la classe Object. L'
hai già incontrata e sai che Object è la classe base per tutte le classi. Praticamente non ha dati, ma ha diversi metodi."
"Perché ha bisogno di metodi? Qualcuno crea davvero istanze della classe Object?"
"Guardala in questo modo: i metodi nella classe Object sono comuni a tutte le classi. In altre parole, i creatori di Java hanno identificato diversi metodi che, a loro avviso, ogni classe dovrebbe avere e li hanno aggiunti alla classe Object."
"E se combinato con il polimorfismo (la capacità di sovrascrivere i metodi della classe Object nelle classi derivate), questo diventa uno strumento molto potente."
"Vediamo quali sono questi metodi:"
Metodo | Descrizione |
---|---|
|
Restituisce una rappresentazione in forma di stringa dell'oggetto. |
|
Una coppia di metodi utilizzati per confrontare gli oggetti. |
|
Restituisce un oggetto speciale che descrive la classe corrente. |
|
Metodi per controllare l'accesso a un oggetto da diversi thread. Per la sincronizzazione dei thread. |
|
Questo metodo ti consente di rilasciare risorse native non Java: chiudere file, flussi, ecc. |
|
Questo metodo consente di clonare un oggetto: crea un duplicato dell'oggetto. |
"Questi metodi possono essere divisi in 6 gruppi. Alcuni li conosci già, il resto lo conosceremo nelle lezioni successive."
"Per qualche ragione, non vedo niente di utile qui."
"Amigo! Se questi metodi non fossero importanti, non li avrebbero aggiunti a ogni singolo oggetto! Quindi, ti consiglio di guardare più da vicino cosa sono e perché sono necessari. Se ti sembrano poco importanti , allora o non hai capito qualcosa o non hai capito qualcosa correttamente."
"OK. Ascolterò attentamente."
"Iniziamo con il metodo toString().
"Questo metodo ti consente di ottenere una descrizione testuale di qualsiasi oggetto. La sua implementazione nella classe Object è molto semplice:"
return getClass().getName() + "@" + Integer.toHexString(hashCode());
"getClass() e hashCode() sono anche metodi della classe Object.
La chiamata a questo metodo in genere produce un risultato come questo:"
java.lang.Object@12F456
"E a che serve una simile descrizione?"
"Questa descrizione ti consente di conoscere la classe dell'oggetto su cui è stato chiamato il metodo. Puoi anche distinguere tra oggetti; oggetti diversi avranno cifre diverse dopo il simbolo @."
"Ma il vero valore di questo metodo risiede altrove. Questo metodo può essere sovrascritto in qualsiasi classe per restituire una descrizione dell'oggetto più dettagliata o adatta."
"Ma c'è di più. Poiché puoi ottenere una rappresentazione testuale di ogni oggetto, Java ti ha reso possibile implementare il supporto per 'aggiungere' stringhe agli oggetti. Dai un'occhiata
:"
Codice | Cosa succede davvero |
---|---|
|
|
|
|
|
|
"Sì, lo uso regolarmente. Soprattutto quando scrivo un programma o cerco bug. È un'operazione utile."
GO TO FULL VERSION