Uso de Java [Interfaces / Classes abstratas] [duplicado]

Esta pergunta já tem uma resposta aqui:

Interface versus classe abstrata (OO geral) 33 respostas

Ultimamente, decidi dar uma olhada no Java, para que eu ainda seja bastante novo e também para a abordagem da programação OO, então eu queria esclarecer algumas coisas antes de aprender mais (acho que nunca é cedo para começar com boas práticas )

Estou programando um pequeno jogo 2D por enquanto, mas acho que minha pergunta se aplica a qualquer projeto não trivial. Pela simplicidade, darei exemplos do meu jogo.

Eu tenho diferentes tipos de zumbis, mas todos eles têm os mesmos atributos (x, y, saúde, ataque etc), então escrevi uminterface Zumbi que eu implemento por WalkingZombie, RunningZombie TeleportingZombie etc. Essa é a melhor coisa a fazer? Eu sou melhor com umaula abstrata? Ou com umsuper classe? (Não estou planejando implementar parcialmente funções - portanto, minha escolha por uminterface em vez de umclasse abstrata)

Eu tenho uma classe descrevendo o personagem principal (Survivor) e, como é muito grande, eu queria escrever uma interface com as diferentes funções, para que eu possa ver e compartilhar facilmente a estrutura dele. É uma boa prática? Ou é simplesmente um desperdício de espaço e tempo?

Espero que essa pergunta não seja classificada como subjetiva, porque eu pensei que programadores experientes não discordariam desse tipo de tópico, pois o uso de interfaces / super classes / classes abstratas segue regras lógicas e, portanto, não é simplesmente uma escolha pessoal.

questionAnswers(9)

yourAnswerToTheQuestion