Eu estava lendo um livro sobre Java e na parte de coleções dizia como declarar um ArrayList da seguinte forma:
List minhalist=new ArrayList;
Porém não entendi uma coisa: apesar do objeto ArrayList ser derivado da interface List, porque o tipo é List e não ArrayList. Està correto o tipo ser de interface? Por que?
Oi Danilo,
Seja bem-vindo ao GUJ!
Isso já foi discutido nesse tópico:
http://www.guj.com.br/posts/list/55387.java#290673
Por dar uma lida por lá? Se ainda tiver dúvidas, poste aí que a gente esclarece! 
Já adiantando um pouco. Definir se a lista é um LinkedList ou um ArrayList é um aspecto que envolve mais a implementação do que adicionar novos métodos a lista em si. Então, é preferível trabalhar com a classe superior para que no futuro você possa alterar a implementação sem alterar seu código.
Há exemplos no link que te passei.