Ho compreso un po' meglio quell'esempio però avrei una domanda. In realtà si ricollega al discorso del polimorfismo per dati fatto nell'altra discussione ma visto che parliamo di questo specifico esempio la faccio qui.
Abbiamo detto che la classe di test corretta è questa:
Nella prima riga del main viene dichiarata una variabile reference di tipo Animale a cui poi viene assegnato l'oggetto Carnivoro istanziato.codice:public class TestAnimali { public static void main(String args[]) { Animale<Erbivoro> tigre = new Carnivoro(); Erbivoro<Erba> erbivoro = new Erbivoro<Erba>(); tigre.mangia(erbivoro); } }
Questa riga mette in evidenza il polimorfismo e viene invocato, nella terza riga, il metodo mangia dell'oggetto istanziato (e non quello di Animale).
La mia domanda è: se è vero quello che ho appena detto perchè nella seconda riga viene creata una variabile reference di tipo Erbivoro e non di tipo Animale? Provo a rispondere. Perchè in quel caso la variabile reference serve solo per essere passata in input al metodo mangia?