Em um processo seletivo me fizeram pergunta : qual a diferença entre uma classe abstrata e uma interface.
Qual a resposta
Uma interface é uma classe 100% abstrata.
Classes abstratas permitem métodos não abstratos e atributos, interfaces não.
Este assunto da pano para a manga.
Antes que algum imbecil poste um texto enorme em ingles falando sobre o assunto ou fale que o photografo esta no forum errado, serei prático.
Uma classe abstrada é uma classe que se relaciona com outras atraves da herança. Ja a interface se relaciona com outras classes atraves da simulação de uma herança. A tal da implementação. Atraves das interfaces podemos simular a tal da herança multipla em java.
Uma interface obriga que a classe que a implemente, defina todos os metodos da interface. A interface so permite a inclusão de metodos “abstratos” (sem corpo).
Alias todo metodo “abstrato” seja ele de uma interface ou classe abstrata deve ser sobrescrito nas classes que o extendam ou o implementem, entretanto diferentemente das interfaces as classes abstratas permitem a criação de metodos não abstratos.
A interface é uma classe onde só vai ter as assinaturas de métodos.
a serem instanciados em outras classes através de herança.
CLasse abstrata vc pode criar o metodo e instancialo na própria classe
Uma interface é um compromisso comportamental: um contrato.
Uma classe abstrata define uma entidade.
É por isso que a primeira só tem métodos abstratos e não tem atributos. Porque ali, temos que especificar um comportamento desejado, não um tipo de objeto em si.
E é por isso que a segunda tem métodos concretos e atributos.
Amigos,
eu vejo tambem da sequinte forma
Em uma classe abstrata eu tenho a realização da herança, ja com uma interface eu implemento uma associação que ai pode ser uma composição ou agregação. Dai a posibilidade de termos a simulação da herança multipla.
Eu gostaria de saber se mais pessoas concordam ou discordam.