Para que usar Interfaces em POO?

###Para que usar mesmo interfaces em POO?

Por que ao usar interface e uma classe implementar a interface a classe se torna obrigatório a implementar estes métodos, mas para que isso? não seria mais fácil fazer o métodos na classe mesmo em vez de criar uma interface só para obrigar a ter esses métodos, vcs poderia me explicar o real motivo de usar interfaces? e vcs ao programarem no seu dia a dia, usam muito interfaces?

Você ganha e muito em polimorfismo

https://www.caelum.com.br/apostila-java-orientacao-objetos/interfaces/

1 curtida

Nota:
Existe interface no sentido amplo, e interface no sentido da keyword usada em algumas linguagens.

Para não confundir, vou chamar de interface a keyword usada em linguagens como Java, e chamar de API o conceito geral de interface, ou seja, os métodos e propriedades disponibilizados por instancias de uma classe.


Respondendo a questão:

O principal motivo da existência de interfaces é simplesmente expressar certas relações entre tipos e ao mesmo tempo atender às restrições do sistema de tipos que foi usado pela linguagem. Mas nem toda linguagem é assim.

Nesse quesito, existem 2 categorias de sistemas de tipos, nominais e estruturais.

Num sistema de tipos nominal, a interface serve parar dizer ao compilador que essa classe é um subtipo (tratado como especial em várias linguagens) da API definida pela interface e assim poder categorizar sua classe como compatível com tudo que aceita aquela API. É uma interface explícita, onde você tem uma interface declarada com um nome especifico e as classes compatíveis com ela são obrigadas a dizerem que implementam essa interface.

Num sistema de tipos estrutural, as interfaces são implícitas, que podem variar no sentido de terem uma interface declarada, semelhante a como é em Java, mas as classes para implementarem essa interface não precisam incluir uma clausula implements, basta que a API delas coincida com a API da interface. Outra alternativa é usando ducktyping em linguagens como C++ e D que tem tipagem estática. Usando ducktyping nelas não existe a necessidade de uma interface declarada em lugar nenhum, mas usando recursos próprios dessas linguagens (templates), é possível fazer uso de classes que possuam uma API compativel, bastando que a API delas possua os métodos utilizados nos templates.

2 curtidas

Muito Obrigado por sua resposta ajudou muito!

Obrigado vou dar uma lida :slight_smile:

1 curtida