As classes abstratas, as chamadas ABC (Abstract Base Classes), tem funcionamento muito parecido com interfaces do Java?
As classes abstratas, as chamadas ABC (Abstract Base Classes), tem funcionamento muito parecido com interfaces do Java?
Oi Fredson, tudo bom?
Boa colocação!
Classes abstratas são relativamente parecidas com interfaces mesmo.
Uma classe abstrata apenas com métodos abstratos tem um comportamento quase igual ao de uma interface. A diferença é que interfaces podem ser implementadas ao invés de herdadas como classes abstratas. Isso significa que, no java, você pode implementar quantas interfaces quiser e aproveitar do polimorfismo disso. Já com classes abstratas só podemos herdar uma vez.
Além disso, interfaces não permitem a criação de atributos. Classes abstratas permitem.
A semelhança na prática é grande mas na teoria elas divergem.
Classes abstratas servem pra definir dados e comportamentos em comum entre classes que possuem um vinculo semantico. Interfaces servem pra definir comportamentos em comum entre classes sem a necessidade de um vinculo semantico.
Abraço