Notice that if you have
List dogs = new ArrayList()
then, if you could do
List animals = dogs;
this does not turn dogs into a List. The data structure underlying animals is still an ArrayList, so if you try to insert an Elephant into animals, you are actually inserting it into an ArrayList which is not going to work (the Elephant is obviously way too big ;-).