Diferenca de Metodos

Bom dia a todos!

Qual a diferença entre metodo abstrato e uma interface?

Os dois são obrigados a serem implementados?

para ambos a implementação é obrigatória

o diferença entre eles basicamente…

numa classe abstrata alguns metodos podem ser implementados e outros podem ser declarados como abstratos. assim uma subclasse devera implementa-los

em um interface nenhum metodo pode ser implementado… eles sao apenas declarados… assim a classe que vier a impementar essa interface obrigatoriamente devera implemntar todos os metodos declarados na interface

Estes tempos alguem postou isso aqui no Forum… mas nao lembro em qual categoria.

Mas vou tentar explicar um pouco.

um método abstrato é um método que possui somente assinatura e não possui implementação. Uma classe abstrata pode conter metodos abstratos ou não-abstratos e ser estendida por outra classe que deverá implementar os métodos abstratos herdados.

Interface seria algo como o supra-sumo da abstração. É impossível ter algo não abstrato em interfaces. Todos os métodos são abstratos e a classe que for implementar esta interface, tem a responsabilidade de implementar os métodos herdados.

A diferença básica é: Java não tem herança multipla, ou seja, em uma classe tu podes estender somente uma classe, e para isso existem interfaces, pois uma classe pode implementar N interfaces, que estão abstraindo comportamentos.

Não adiantaria querer construir todos os métodos abstratos em duas classes abstratas que tu precisas usar, sendo que tu só poderá fazer extend de uma “e somente uma” das classes.

Por isso a recomendação é: programe para interfaces e não para classes.

[]s

Desde que não seja abstrata. :wink:

[code]Qual a diferença entre metodo abstrato e uma interface?

Os dois são obrigados a serem implementados?[/code]

Cara, ambos são obrigados a serem implementados sim…
na verdade quando uma classe implementa uma interface ela obrigatoriamente necessita declarar todos os metodos dessa interface, não há necessidade de haver uma implementação desses metodos, mas
todos eles devem ser declarados.

Quanto a classe abstrata, podem existir metodos implementados ou não,
, mas os metodos declarados como abstract na classe pai, deverão ser implementados obrigatoriamente nas classes filho.

Blz?!

Espero ter ajudado!!

isto SE a classe filha tb não for abstract :slight_smile:

opa, foi mal…
faltou um detalhe…

Vlw Matheus!

Simplificando seria isto:

  • Uma interface nunca é implementavel , mas serve para herança multipla?
-Um metodo abstrato devera ser sempre implementado em classes filhas porem não serve para herença multipla?

:oops:

Corrigindo o que eu escrevi:

  • as duas são obirgadas a implementas mas uma serva para herança multipla e outra não, seria isto?

Mais ou menos, pois não é o conceito “purista” de Herança Multipla, mas a interface é uma alternativa para fazer coisas que a HM possibilita em uma linguagem que não possui a implementação de HM.

[]

tu não entendeu muita coisa Rafael, bah, agora to no trabalho e não posso ficar escrevendo post muito grande, fica difícil, pessoal, alguém pode fazer um resumo do livro da kathy com relação a isso e postar aqui? heahehe, é o melhor conteúdo q existe quanto a isso…

Acho que o resumo da própria Kathy sobre interfaces já ajuda bastante.

Mas na semana passada eu vi um resumo em português em que ela ilustra com uma simplicidade enorme e ao mesmo tempo abordando muito bem este assunto. Sem dúvida a Kathy expressa muito bem sobre este assunto. Achei até que era aqui no PJ mas procurei e não achei.

[]s

Obrigado , o artigo em ingles serviu bem!!

valeu mesmo!!!