Qual é o benefício do polimorfismo usando a interface Collection para criar o objeto ArrayList?
Estudei polimorfismo e entendo que ele pode fazer ligação dinâmica de métodos, como abaixo.
Supondo que a classe Animal seja abstrata.
public class AnimalReference
{
public static void main(String args[])
Animal ref // set up var for an Animal
Cow aCow = new Cow("Bossy"); // makes specific objects
Dog aDog = new Dog("Rover");
// now reference each as an Animal
ref = aCow; ref.speak();
ref = aDog; ref.speak();
}
Eu costumava criar instância de ArrayList como:
ArrayList myList = new ArrayList();
Mas geralmente eu pensava que as pessoas escrevem:
Collection myList = new ArrayList();
Então, minha confusão é qual é o benefício de declarar como coleção? Também não sabia que você pode ter "Collection" (que é uma interface que não é uma classe abstrata) na frente de "myList".
Por que não é uma boa prática apenas dizer:
ArrayList myList = new ArrayList();
Eu li os documentos Java da interface Collection e ArrayList, bem como os tutoriais on-line, mas ainda não são muito claros. Alguém poderia me dar alguma explicação?