Executando verificação de segurança...
1

Comecei a estudar POO agora (com Java).. e a primeira coisa que me veio a cabeça quando aprendi interface foi "Ta mas que inutil...eu preciso criar uma interface só pra dizer oq outra classe deve ter.. precisando reescrever toda função do zero.. nao seria melhor só extender uma classe mae?"
Mas compreendo que em projetos maiores.. talvez faça mais sentido que existam classes com as mesmas funções porem com coportamentos diferentes.. ainda preciso absorver isso..

Carregando publicação patrocinada...
3

Um exemplo que me vem a mente pra te dar agora é: imagina que no seu projeto você vai lidar com um banco de dados SQL e também um banco de dados em memória. Você então decide usar o padrão de repositórios para fazer as operações nos bancos. Nesse caso você poderia criar uma interface Repository definindo os métodos de escrita, leitura, atualização e deleção (o CRUD básico). Depois você faria duas classes, uma SqlRepository e uma MemoryRepository que vão extender de sua interface Repository.
Nesse cenário ambas as classes vão ter os mesmos métodos, porém com implementações diferentes, porque a maneira de fazer operações nesses bancos é diferente.

Outros casos onde o uso de interfaces é muito útil é pra realizar testes unitários e para aplicar Injeção de Dependência, Inversão de Dependência, e diversos outros patterns e boas práticas.

Também estou a pouco tempo estudando POO. Trabalho com C# há 8 meses, antes disso programei por pouco mais de 1 ano só com Javascript. Tem sido bem desafiador, pois tem coisas infinitas pra aprender, mas ao mesmo tempo é gratificante toda vez que entendo algo novo da programação orientada a objeto.

Obrigado pelo comentário, e bons estudos!

1

Um exemplo real que apliquei num ecommerce foi a aplicação de um cupom em uma entidade, criamos uma interface que define os métodos get, set, put e delete (ex).
Depois para cada tipo de cupom foram criadas classes que implementaram a interface. Cada classe por sua vez implementaram sua própria lógica de get,set, put e delete.

Nessa implantação usamos o um pattern chamado Strategy Design Pattern.

Para ler mais sobre o Strategy Design Pattern eu recomendo esse site:
Source Making