Quote Originariamente inviata da francesco.muia Visualizza il messaggio
Si chiama "Polimorfismo", spiegarlo in poche righe è difficile, soprattutto se ancora non hai visto cos'è l'ereditarietà.
Cmq cerco di spiegarti il caso in particolare che hai evidenziato.
HashMap come tutte le collezioni di oggetti in java implementano l'interfaccia Collection e ovviamente implementando questa interfaccia devo definire i metodi che essa contiene (isEmpty,get etc...). Ora tipicamente quando un oggetto eredita/implementa un'altro oggetto si definisce un relazione del tipo "è un" cioè un HasMap è un HashMap ma è anche una Collection, quindi essendoci questo tipo di relazione si può definire un metodo esempio values che ha come tipo di ritorno una Collection e all'interno di questo metodo effettuare il return this (non è questo il caso di HashMap non ritorna semplicemente il this), in quanto la classe in questione è anche una Collection.
La mia domanda è su cosa succede sui metodi chiamati su quella Collection ritornata dal metodo di HashMap, che è propio una Collection(a=unaHashMap.value(),a è propio una Collection, non c'è polimrfismo, a me interessano i metodi chiamati su a; a.toString() al massimo dovrebbe chiamare col polimorfismo il metodo di Object e a.get(0) semplicemente non dovrebbe essere implementato).