sergiotaborda, vamos lá então, hehe.
Seguinte: imagine que tenho uma classe abstrata apenas com métodos abstratos. Essa classe eu estou implementando para mim, nunca ninguém além de mim irá utilizá-la. Eu nunca vou disponibilizar essa classe em alguma biblioteca para ser usada por outros, e também nunca vou deixar algum programador mexer nessa classe e implementar algum método, ou fazer alguma coisa errada. Resumindo, eu sei que essa classe só deve possuir métodos abstratos, e ela permanecerá assim. Neste cenário, qual a vantagem de utilizar interface?
Tirando o fato de que com interface eu posso ter uma “herança múltipla” (implementando várias interfaces).
[quote]É. Vc estava buscando. Mas a frase é sarcástica e vc não entendeu isso. Se “Deixando de lado todas as diferenças” são iguais, quer dizer que ha diferenças.É como dizer que “O homem e a mulher, deixando de lado todas as diferenças, são iguais.” Entendeu ?
Pior de tudo é que vc ainda afirma que sabe que existem diferenças e quais elas são, mas mesmo assim vc insiste em quere que lhe digam que não diferenças ?
[/quote]
Cara, as diferenças que eu disse que conheço são teóricas (e.g. melhores práticas de se programar, pensando no lado de projeto, de como ficará o visual do código, etc) mas não limitações práticas! Entenda isso por favor. Ninguém até agora me deu um exemplo do tipo “cara, se você tiver que fazer isto: xxx… você só conseguirá fazer com interface”.
O ViniGodoy não me deu uma resposta sarcástica ao meu ver. E se deu o problema é dele, com todo o respeito. Pense no seguinte: se você herdar uma classe abstrata, não poderá herdar outra. Se usar interface ao invés da classe abstrata, poderá implementar diversas interfaces. Isto é uma limitação técnica quando se usa classes abstratas!.
É isso o que eu quero. Porém este exemplo eu já conheço e citei no primeiro post. Eu só quero ver se existe outro exemplo como este.
Eu tenho muita experiência em Java meu caro, programo há anos, e isso não quer dizer que eu seja um guru. Essa dúvida só me surgiu agora.
E se a “classe de terceiros que foi mal implementada” tivesse sido bem implementada? O que eu quero deixar de lado é esta questão de “pode ser, pode não ser”. Eu quero a limitação técnica. Eu não estou dizendo que se ninguém me der uma resposta pra essa pergunta eu vou passar a só usar classe abstrata. Eu defendo interface! Pelos termos já citados de projeto, de que lá na frente pode surgiu algum problema. Mas quero por curiosidade saber da questão técnica, prática.
[quote]Existe sim diferença teórica e prática entre classe abstrata e interface. Se não existisse, não precisaria de dois contrutos.
Vc consegue fazer quase tudo o que faz com uma, com o que faz com outra, mas não tudo.[/quote]
O que não posso fazer então?