
Originariamente inviata da
andbin
È perfettamente possibile, così come è possibile avere una qualunque variabile o parametro del tipo di una interfaccia o di una classe astratta. Non è quello il punto. La cosa importante è che quando poi dovrai assegnare/passare/restituire qualcosa, dovrai avere un oggetto (di una classe "concreta") che soddisfa quel tipo, cioè implementa la interfaccia o estende la classe astratta.
Nel caso di un metodo che ha una interfaccia come tipo di ritorno, il senso è anche facile da capire. Vuol dire che il metodo ha facoltà di scegliere la implementazione che vuole e che il chiamante quindi non dovrebbe preoccuparsi di quale sia ma solo di sapere che l'oggetto funziona secondo l'astrazione descritta dalla interfaccia.