Classe Object in Java

Concetti Chiave
  • La classe Object è la superclasse di tutte le altre classi in Java.
  • Ogni oggetto in Java è un'istanza di Object, che fornisce metodi fondamentali come equals(), toString(), e getClass().
  • I metodi equals() e toString() possono essere sovrascritti per fornire comportamenti specifici per le classi derivate.

La Classe Object

Esiste una classe speciale, Object, definita da Java.

Tutte le altre classi sono (in modo implicito) sottoclassi di Object. Cioè, Object è una superclasse di tutte le altre classi.

Questo significa che una variabile di riferimento di tipo Object può riferirsi a un oggetto di qualsiasi altra classe. Inoltre, poiché anche gli array sono implementati come classi, una variabile di tipo Object può anche riferirsi a un array.

Object definisce i seguenti metodi, il che significa che sono disponibili in ogni oggetto.

Metodo Scopo
Object clone() Crea un nuovo oggetto identico all'oggetto clonato.
boolean equals(Object object) Determina se un oggetto è uguale a un altro.
void finalize() Chiamato prima che un oggetto non più utilizzato venga riciclato. (Deprecato a partire da JDK 9.)
Class<?> getClass() Ottiene la classe di un oggetto durante l'esecuzione.
int hashCode() Restituisce il codice hash associato all'oggetto invocante.
void notify() Riprende l'esecuzione di un thread in attesa sull'oggetto invocante.
void notifyAll() Riprende l'esecuzione di tutti i thread in attesa sull'oggetto invocante.
String toString() Restituisce una stringa che descrive l'oggetto.
void wait() Attende un altro thread di esecuzione.
Tabella 1: Metodi della Classe Object

I metodi getClass(), notify(), notifyAll() e wati() sono dichiarati come final. Non è possibile sovrascriverli. Questi metodi sono descritti nelle prossime lezioni. Tuttavia, si noti ora due metodi: equals() e toString().

Il metodo equals() confronta due oggetti. Restituisce true se gli oggetti sono uguali, e false altrimenti. La definizione precisa di uguaglianza può variare, a seconda del tipo di oggetti confrontati.

Il metodo toString() restituisce una stringa che contiene una descrizione dell'oggetto su cui viene chiamato. Inoltre, questo metodo viene automaticamente chiamato quando un oggetto viene stampato usando println(). Molte classi sovrascrivono questo metodo. Farlo consente loro di adattare una descrizione specificamente per i tipi di oggetti che creano.

Consiglio

Dettaglio sulla sintassi del tipo restituito

Si noti un ultimo punto: notare la sintassi insolita nel tipo restituito per getClass(). Questa sintassi riguarda un argomento, i cosiddetti generics di Java, che affronteremo nelle prossime lezioni.