Quando usar a classe abstrata e a Interface?

Oi pessoal!!
Bem,gostaria de saber quando eu devo usar a classe abstrata e a interface?

Se alguem puder me ajudar,agradeço!!!

Usamos Interface quando precisamos que classes de diferentes origens (herança) tenham métodos em comum e possam ser acessados através de uma mesma variável.
A classe abstrata é utilizada quando você quer que uma classe que herde dela implemente alguns métodos, mas que também possam ter métodos implementados na própria classe abstrata.

Em muitos casos, esses conceitos se confundem. “Quando” utilizar é mais um conceito de projeto que uma regra de programação.

Bem, isso foi um trabalho que o meu professor pediu,ele ministra aula de Padrão de Projeto!
Muito obrigada!!!

Em classe abstrata, vc coloca os métodos genéricos que vc quer que as classes que a herdem tenham que implementar ou não(subclasses serão obrigadas a implementar se forem métodos abstratos e podem escolher implementar ou não se forem métodos normais). Já em interfaces, vc só coloca a assinatura dos métodos mas sem implementá-los ou com um corpo definido, pois todos os métodos de uma interface são public abstract, logo quem implementar uma interface terá de implementar todos os métodos que estão escritos nela. Interfaces são usadas quando uma classe já está herdando métodos de uma classe mas precisa de implementar métodos de outro lugar, como java não tem herança multipla o uso de interfaces se encaixa para burlar essa necessidade.

Gracy Kelly hahahaah não seria Gracy Lani ?

Olá Gracy seja bem-vinda!
Interface é uma solução para herança múltipla utilizada em C++.
Detalhe, uma classe pode estender(extends) apenas uma classe, mas pode implementar(implements) várias interfaces.
Um boa dica é você baixar gratuitamente a apostila FJ-11 sobre OO da Caelum.

http://www.caelum.com.br/treinamentos/fj-11-java-orientacao-objetos/;jsessionid=45CEA0816C1A107CD562B8DE65B38120

Abraço.

[quote=greyce kelly]Oi pessoal!!
Bem,gostaria de saber quando eu devo usar a classe abstrata e a interface?

[/quote]

Por padrão use sempre Interface.
A classe abstrata vc usa quando alguns dos métodos da interface têm uma forma padrão de ser implementada.
Ai vc implementa alguns métodos e deixa os outros.

Classes abstratas e interfaces são utilizadas especialmente em conjunto com outras tecnicas ( design patterns) e são uteis
especialmente nesses cenário. No dia-a-dia uma classe normal resolve o problema mais facilmente.