![]() ![]() |
|
La classe Object è quella dalla quale discendono per default tutte le altre classi, per cui i suoi metodi sono disponibili in tutti gli oggetti grazie al meccanismo dell'ereditarieta' (inheritance) che studieremo nel Laboriatorio II.
Alcuni metodi forniti dalla classe Object, e
quindi invocabili su qualunque oggetto Java:
Concettualmente, equals restituisce true
se il contenuto di due oggetti è uguale (non il riferimento,
come per l'operatore ==). Si richiede che implementi una relazione
di equivalenza, quindi che goda delle proprietà di riflessività,
simmetria, transitività e consistenza. Deve essere ridefinito
in tutte le classi su cui è necessario effettuare confronti.
Il metodo equals della classe Object, non potendo fare alcuna assunzione sulla struttura interna degli oggetti su cui viene invocato, utilizza semlicemente l'operatore == per confrontarli. Quindi attenzione: se equals viene usato in una classe senza essere ridefinito, non da' errore in esecuzione, ma il risultato potrebbe essere incorretto. |
restituisce una stringa che puo' essere considerata come
la "rappresentazione testuale" dell'oggetto su cui e' invocato (da usare
ad esempio nella stampa). Deve essere ridefinito in ogni classe che lo
usa, per ottenere un risultato significativo (tipicamente, di un oggetto
si vogliono stampare i valori delle variabili d'istanza, ed eventualmente
una intestazione).
La definizione default del metodo in Object restituisce il una stringa del tipo <classe>@<hashcode>, dove <classe> e' il nome della classe dell'oggetto su cui e' invocato, e <hashcode> e' la rappresentazione esadecimale del codice hash dell'oggetto. |
serve per ottenere una copia dell'oggetto, ottenuta allocando
una nuova istanza e copiandovi i valori di tutte le variabili d'istanza.
Il clone di un oggetto e' una copia superficiale (shallow copy)
e non profonda (deep copy): eventuali oggetti contenuti nell'oggetto
da clonare non vengono a loro volta clonati, ma ne viene copiato il riferimento.
La deep copy si puo' implementare eventualmente con un altro metodo.
Di norma, se un classe contiene il metodo clone, si dichiara che essa implementa l'interfaccia Clonable (vedremo le interfacce a Laboratorio II). |
Una descrizione completa della classe si trova al seguente link: Object.html