Já pesquisei na internet, li diversas perguntas no StackOverFlow, artigos, mas ainda não consigo compreender bem a utilidade das interfaces. A classe abstrata eu entendi e faz sentido quando usamos herança, por não tem sentido criar uma classe genérica sendo que vamos sobrescrever os métodos da classe base.
Agora, vendo o lado das interfaces, qual o sentido de utilizar interface e herança em uma classe sendo que vamos ter que implementar o método abstrata da classe abstrata e a interface obriga você a fazer o mesmo? Programo em linguagens OO e por enquanto não consegui encontrar a necessidade de usar uma interface e nem classes abstratas. Qual o seu contexto de uso? Quando se faz necessário utilizar uma interface quando podemos usar uma classe abstrata e vice-versa? Essa parte da OO sempre me deixou confuso. Não entra na cabeça de jeito nenhum.