Uso de Interfaces (Classes Abstratas) X Classes Concretas

Bom dia,

Estou procurando na net e não achei nada que fale sobre o desempenho da aplicação quando se usa Interfaces ou Classes Abstratas ao inves da Classe Concreta para referenciar objetos.
Um exemplo seria a utilização da Interface List ao inves da classe ArrayList, assim:

List<Pessoa> lista = new ArrayList<Pessoa>();

ao inves de

ArrayList<Pessoa> lista = new ArrayList<Pessoa>();

E também nos parametros dos métodos:

public void umMetodo(List param){}

Pra sermos mais diretos, vamos deixar a questãos de reuso, projeto, modelagem, etc e vamos focar em duas coisas: uso de memória e velocidade de execução. :smiley:
Existem alguma vantagem do uso de um ou de outro? Ou dá na mesma?

Abraços

Um palpite, acho que dá na mesma, pois no final das contas vc estará instanciando um objeto do mesmo tipo independente se o atributo é do tipo Interface, Classe Abstrata ou Concreta, acho que o que interessa é quando vc instancia o objeto.

Mas é bom o pessoal mais experiente ae falar do assunto.

[quote=jd]uso de memória e velocidade de execução
[/quote]

Acho que nao tem impacto algum. E se tiver, deve ser insignificante.

Como já foi dito, não tem nada a ver com performance e não impacta em nada. Mas por outros motivos que você mesmo citou é altamente recomendavel usar sempre o tipo mais generico.

Quando escrevi esse tópico deixei todas as minhas aulas de português na gaveta! hahahaha

Valeu pelas respostas.

Abraços