¿Cuál es el beneficio del polimorfismo usando la interfaz de Colección para crear un objeto ArrayList?
Estudié el polimorfismo y entiendo que puede hacer un enlace de método dinámico como a continuación.
Suponiendo que la clase Animal es una clase abstracta.
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();
}
Solía crear instancias de ArrayList como:
ArrayList myList = new ArrayList();
Pero por lo general pensé que la gente escribe:
Collection myList = new ArrayList();
Entonces, mi confusión es ¿cuál es el beneficio de declarar como Colección? Además, no sabía que puede tener "Colección" (que es una interfaz no clase abstracta) frente a "myList".
Por qué no es una buena práctica decir:
ArrayList myList = new ArrayList();
Leí la interfaz de la Colección y los documentos Java de ArrayList, así como los tutoriales en línea, pero aún no estoy muy claro. ¿Podría alguien darme alguna explicación?