Abstrata x Interface

Boa tarde pessoa,

Eu gostaria de tirar uma duvida sobre classe abstrata e interface, não sei se entendi muito bem mas vamos.

  • Classe abstrata: eu posso ter metodo abstrato e metodo com alguma coisa dentro;
  • Classe interface: eu so posso ter assinatura do metodo;

Seria essa a diferença? Ou seja em uma classe abstrata eu posso ter metodo abstrato e metodos que nw sejam abstrato e na interface eu só tenho a assinatura.

Agradeços a todos

[quote=hugo.campos]Boa tarde pessoa,

Eu gostaria de tirar uma duvida sobre classe abstrata e interface, não sei se entendi muito bem mas vamos.

  • Classe abstrata: eu posso ter metodo abstrato e metodo com alguma coisa dentro;
  • Classe interface: eu so posso ter assinatura do metodo;

Seria essa a diferença? Ou seja em uma classe abstrata eu posso ter metodo abstrato e metodos que nw sejam abstrato e na interface eu só tenho a assinatura.

Agradeços a todos[/quote]

Sim, é isso.

Valeu renamed. Acho que agora eu aprendi. Onde sera que posso acha um boa explicação sobre composição, eu to procurando na internet mais so fala fala e não acho na concreto.

pensse dessa forma:

classe mae abstrata:
quando vc tiver varias classes filhas q vao implementar o mesmo metodo da mesma forma porem com valores diferentes
vc pode passa esses valores para cima para a classe mae e executar 1 unica vez o metodo

alem d poder decidir entre usar 1 metodo abstrato q faz com q todas as classes filhas sejao obrigadas a executar
e metodos com corpo e (nao abstratos) na classe mae

interface:

aki e como c vc fizesse 1 script d metodos sem corpo e tudo q implementar essa interface e obrigado e executar os metodos
e tambem e 1 bom lugar para definir constantes

Classes abstratas:

  1. Você pode ter atributos;
  2. Você pode ter métodos com implementações;
  3. Você só pode herdar de uma única classe abstrata;
  4. Você pode ter métodos abstratos (embora não seja obrigado);

Interfaces:

  1. Você não pode ter atributos;
  2. Você não pode ter métodos com implementações;
  3. É possível implementar quantas interfaces você quiser;
  4. Você só tem métodos abstratos;

Na verdade, interface são um péssimo local para se definir constantes. É considerado, inclusive, um anti-pattern.