Diferença entre Interface e Abstract

Opa bom ai ai pessoal, estava estudando alguns casos e tive algumas dúvidas, basicamente eu queria saber:

1º Qual a diferença de Interface e Abstract?
2º Quando e onde eu devo usar?

Se possivel alguem poderia passar um material com um conteudo avançado ou alguns exemplos e tal ?

Obrigado.

Interface define, basicamente, comportamentos, forçando as classes que a implementam a implementar todos os seu métodos. Dentro de uma interface os métodos só são declarados, portanto não tem implementação dentro deles. Quem especializa estes métodos são as classes que implementam a interface.

Abstratc pode conter métodos abstratos que são obrigados a ser implementados pelas classes filhas.

:wink:

Leia aqui:
http://www.guj.com.br/posts/list/51866.java#273198

E aqui:
http://www.guj.com.br/posts/list/55387.java#290673

Interface: é uma classe 100% abstrata ou seja seus metodos não tem implementação nenhuma apenas a assinatura suas "variaveis " serão apenas constantes. Interfaces em java são uma forma de implementar herança multipla.

Classe abstrata: em java um classa é declarada abstrata quando pelo menos um metodo é abstrato, ela também pode ter métodos concretos por alguma convenincia, pórem uma classe concreta somente pode herdar uma unica classe abstrata.

espero ter ajudado

Interface não é uma classe. Lembram uma classe 100% abstrata, mas não são. Lembre-se que interfaces não só tem essas características que você falou, como dão uma garantia de que essas características irão se manter para sempre. Essa garantia as classes não dão.

Interfaces não tem nada a ver com herança múltipla. Elas não definem um tipo de dado, e sim um comportamento.

Uma classe abstrata pode não ter nenhum método abstrato. Exemplos disso existem inclusive na API do Java, como no caso da classe WindowAdapter. Para uma classe ser abstrata basta ela ser declarada como abstract. A partir desse momento, ela não poderá ser instanciada, a menos que um filho concreto seja criado.

Caso vc tenha um unico metodo abstrato… a classe obrigatoriamente será declarada como abstrata…partindo do ponto de vista de que não existe metodo sem.