pterodattero ha scritto:
Non ho veri e propri dubbi sulle interfacce bensì mi ha lasciato spiazzato il pezzo di codice che ho riportato nella domanda.
Ma la questione non sono tanto le interfacce ma in generale i concetti di ereditarietà/polimorfismo.
In Java un tipo (reference, non certo primitivo) può derivare da un altro tipo. Se il tipo B estende il tipo A, allora ovunque sia richiesto un oggetto di tipo A tu puoi anche lecitamente passare/assegnare un oggetto di tipo B.
Se la classe Gatto estende Animale, allora ovunque ci sia una variabile/parametro di tipo Animale, tu puoi passarci un oggetto di tipo Gatto.
Questo principio della ereditarietà vale per le classi ma anche per le interfacce. Con le regole per cui:
- una interfaccia può estendere N altre interfacce
- una classe può estendere 1 sola altra classe e implementare N interfacce.
Se ho una definizione del tipo:
public class B extends A implements X, Y { ...... }
Allora la classe A e le interfacce X e Y sono "super tipi" di B.
Nel caso delle collezioni: ArrayList implementa la interfaccia List. List estende la interfaccia Collection e Collection estende la interfaccia Iterable. Quindi List/Collection/Iterable sono "super tipi" di ArrayList. E ne consegue che TUTTE le seguenti assegnazioni sono lecite e tecnicamente corrette.
List<UnTipo> x = new ArrayList<UnTipo>();
Collection<UnTipo> x = new ArrayList<UnTipo>();
Iterable<UnTipo> x = new ArrayList<UnTipo>();
Se non ti sono chiari questi aspetti, non è tanto un problema delle "collezioni" ma appunto in generale dei principi fondamentali della programmazione ad oggetti.
pterodattero ha scritto:
Se può consigliare dei manuali che espongono gli argomenti in toto e non lasciano "pezzi" in giro per poi riprenderli più tardi sarebbe ottimo.
Qualunque libro serio/valido che sia introduttivo alla programmazione in Java dovrebbe spiegare questi concetti.
Non li ho personalmente ma sui forum di programmazione vengono spesso citati e ben quotati i libri su Java di Claudio De Sio Cesari. Se ti va bene l'italiano. Se gradisci libri in inglese .... ce ne sono una svagonata in più ...