Classe abstrata x Interface

Essa é a melhor explicação sobre a diferença de classes abstratas e Interfaces que eu já li.

Simples e direta!!!

http://wickedcoolthoughts.blogspot.com/2008/01/again-abstract-class-vs-interface.html

Acho que a melhor explicação sobre elas foi a que achei na apostila do curso da Caelum Fj-11.

[quote=LuizClaudio]Essa é a melhor explicação sobre a diferença de classes abstratas e Interfaces que eu já li.

Simples e direta!!!

http://wickedcoolthoughts.blogspot.com/2008/01/again-abstract-class-vs-interface.html[/quote]
Não sou muito de ler a sagrada Bíblia, mas o que foi dito por João 3.16 em sua assinatura não só é real como é DEUS em palavras ao qual ninguém teria coragem.
Temos que crer muito em algo… Por que não em DEUS!!!

Acho fraca, a questão da interface está alem dessa questão, é bem mais filosófica :roll:

Como assim filosófica?

[quote=Wesley Marra]Não sou muito de ler a sagrada Bíblia, mas o que foi dito por João 3.16 em sua assinatura não só é real como é DEUS em palavras ao qual ninguém teria coragem.
Temos que crer muito em algo… Por que não em DEUS!!!
[/quote]
:?: :?: :?: :?: :?: :?:

[quote]Não sou muito de ler a sagrada Bíblia, mas o que foi dito por João 3.16 em sua assinatura não só é real como é DEUS em palavras ao qual ninguém teria coragem.
Temos que crer muito em algo… Por que não em DEUS!!! [/quote]

Tbm não entendi…

hauahauhauh agora saquei… ele viu a assinatura do rapaz e pensou que ele estava falando sobre o que está na Bíblia… :shock:

Essa foi ótima… 8)

Como assim filosófica?[/quote]

A programação orientada a objetos é feita para ter sentido, e não funcionar direito(mas tem).

Esse conceito de decorar o que cada coisa faz… só gera gambiarra na minha opnião. O pessoal faz uns códigos que são realmente códigos, você não entende nadinha.

Já vi cada gambiarra c/ interfaces…

[quote=Gauss]

A programação orientada a objetos é feita para ter sentido, e não funcionar direito(mas tem).

Esse conceito de decorar o que cada coisa faz… só gera gambiarra na minha opnião. O pessoal faz uns códigos que são realmente códigos, você não entende nadinha.

Já vi cada gambiarra c/ interfaces…[/quote]

Pois eh Gauss, as vezes eu naun acreditdo em OO, ai eu estudo, estudo, estudo e volta a acreditar, mais ai eu tenho de fazer um projeto real e entao toma gambiarra pro lance ficar bom, depois eu passo naum acreditar de novo, depois estudo, estudo,estudo e vejo alguns erros que cometi no projeto volto a acreditar… sei la, estruturada tb naum eh o caminho, na minha opiniao OO eh igual estruturada com um monte de conceitos a mais… na minha opinao (atual) OO funciona, mas tem de tomar um pouquinho de cuidado com heranca e polimorfismo, ou seja, quase tudo eheheheheheh

para os chato de plantao, o cuidado que eu acho que deve ter eh esse


class A {
    public void fazA(){
        //faz alguma coisa
    }
}

class B extends A {
     public void fazB(){
           //faz alguma coisa
     }
}

class C extend A {
   public void fazC(){
       //faz alguma coisa
   }
}

class Main{

     public void do (B d){
        b.fazB();
     }

    public static void main (String args[]){
          Main m = new Main();
          C c = new C();
          m.do(c);  //O que vai acontecer aqui ????
    }
}

Herança n deve ser usada explicitamente na minha opnião, é só algo que vc vá usar com polimorfismo, só serve pra isso e TUDO que foi feito com herança pode ser feito bem melhor com polimorfismo e herança.

Essa explicação não faz muito sentido. uma interface e um tipo em Java.

Uma interface é um contrato, essa é a melhor maneira de pensar nela. Se eu mplemento uma interface eu obedeço um contrato.

Uma classe é uma implementação. Se eu herdo uma classe eu herdo a implementação.

Ahm?

[quote=pcalcado]

Ahm?[/quote]

Também fiquei perdido.

Na minha opinião não tem o que é melhor… vai depender da aplicação.

O polimorfismo no java consegue ser feito por alguns métodos, entre eles é “usando” herança(que dizem só existir p/ usar com polimorfismo).

IMO, interface existe no java por não ter herança multipla(da mto problema) e com certeza é mais simples.

Recomendo ler isto:

http://www.dsc.ufcg.edu.br/~jacques/cursos/p2/html/oo/o_que_e_polimorfismo.htm

Para o pessoal que o polimorfismo não entrou direito na cabeça, antes eu também tinha diversas dúvidas. Tentei desenvolver um programa razoavelmente grande usando OOP só para testar meus conhecimentos e foi ai que me toquei da diferença de interfaces e classes abstratas(que é GIGANTE), é realmente difícil aprender as coisas a base de livros sem praticar nada. O melhor é sempre fazer um mini projeto para aplicar seus novos conhecimentos.

[quote=pcalcado]Essa explicação não faz muito sentido. uma interface e um tipo em Java.

Uma interface é um contrato, essa é a melhor maneira de pensar nela. Se eu mplemento uma interface eu obedeço um contrato.

Uma classe é uma implementação. Se eu herdo uma classe eu herdo a implementação.

Ahm?[/quote]

Essa coisa de ver a interface como um contrato eu ouvi em um curso de verão ministrado pelo Paulo Silveira na USP, entretanto, nunca tinha pensando muito no assunto, nos meu projetos eu fazia assim essa, violinista é um músico, mas também é um erudito, então minha classe Violinista ia estender Musico e implementar Erudito, nunca tinha pensado em tipo, gostei da explicação por que ela era bem prática… mas valeu a pena ter postado só pra ver o link que o Gauss postou sobre polimorfismo…

Acho que todos livros mencionam a parte do contrato, e o contrato que é, e você ao implementar a interface, é OBRIGADO a escrever os métodos, por mais que seja adicionando só {} depois.

Isso é uma das maiores lendas que se ensina sobre java. Interfaces não tem nada a ver com herança multipla.
Herança serve para reutilização e especialização. Interfaces não te dão nem uma coisa nem outra.
Interfaces são SIM um contrato, que quem implementa deve seguir. Simples assim.

[]´s

O contrato diz que vc deve implementar, não diz como vc deve implementar. Se o metodo implementado vai se comportar como o esperado é responsabilidade de quem esta implementando.

[]´s

jgbt, seu segundo post falou a mesma coisa que o meu :lol:

E eu fiz um comentário generalizando sobre herança multipla, ela serve para arrumar varios problemas de herança multipla, mas não todos, feliz?

Já existem diversos tópicos sobre herança multipla x interfaces etc… Se quiser cheque eles, vamos manter o tópico no assunto previsto.

[quote=Wesley Marra][quote=LuizClaudio]Essa é a melhor explicação sobre a diferença de classes abstratas e Interfaces que eu já li.

Simples e direta!!!

http://wickedcoolthoughts.blogspot.com/2008/01/again-abstract-class-vs-interface.html[/quote]
Não sou muito de ler a sagrada Bíblia, mas o que foi dito por João 3.16 em sua assinatura não só é real como é DEUS em palavras ao qual ninguém teria coragem.
Temos que crer muito em algo… Por que não em DEUS!!!
[/quote]

Não esquenta para que os outros falem, a verdade esta em Deus!!!