Eu estava estudando OO, e fiquei pensando qual a diferença entre criar uma interface e implementar, e criar uma classe abstrata e sobrescrever seus métodos ? No final não daria na mesma ?
Desculpem se a pergunta foi boba.
Obrigado
Sobre Interfaces e Classes Abstratas
7 Respostas
numa interface todos os métodos já são implicitamente abstratos.
em java, vc não pode extender mais de 1 uma classe, mas vc pode implementar quantas interfaces quiser.
Uma discussão bem legal sobre isso:
http://www.guj.com.br/posts/list/27385.java
Eu estava estudando OO, e fiquei pensando qual a diferença entre criar uma interface e implementar, e criar uma classe abstrata e sobrescrever seus métodos ? No final não daria na mesma ?
Desculpem se a pergunta foi boba.
Obrigado
Além de que em classes abstratas você pode abstrair alguns métodos para serem implementados em outras classes e também pode implementar outros métodos. A desvantagem é que você só pode extender 1 classe abstrata enquanto você pode implementar várias interfaces
mais vantagens em usar interfaces nesta discussão
E o q eh a pogramação voltada a interface ao invez da implementação ? até hj estou boiando nesses assuntos
Usando classes abstratas tu consegue um comportamento padrão, assim:
abstract class Programador {
public String getComportamentoPadrao()
{
return "acessar o GUJ pelo menos uma vez por dia!";
}
public abstract void comer();
public abstract void estudar1();
public abstract void estudar2();
public abstract void estudar3();
public void diversao() {
estudar1();
}
}
Neste caso a nossa classe abstrata acima daria uma força pra gente nos fornecendo um comportamento “considerado normal”. Usando interfaces isso não seria possível, ou seja, não poderiamos definir um comportamento padrão.
{}´s 
muito bem observado!!! outra coisa fantástica do emcapsulamento q até pouco tempo eu boiava é para q serve o uso de interfaces… ateh que vi um emcapsulamento muito bem feito num projeto… basicamente vc pode usar a interface para acesar os métodos de uma classe q a implementa… porem vc só pode acessar os métodos q forma definidos na interface… por exemplo[quote]
supondo q vc possui uma interface ‘SerVivo’ que possui o método ‘Comer’ e uma classe q a implemeta chamada ‘Animal’ q possua os métodos ‘Comer’ e ‘Caçar’, ao estanciar a classe ‘Animal’ através de sua interface vc só poderia acessar o método ‘Comer’… isso é bom pra evitar q alguem use métodos indevidos!!! :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen: