Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Quando eu devo usar abstract e interfaces?

Atualmente eu uso só interfaces no trabalho, todavia, eu gostei da pratica de classes abstratas, quando seria aconselhável usar um ou outro

1 resposta
solução!

Olá André, como vai?

Quando usar um ou outro é uma pergunta um pouco complexa. Vai depender do problema que está enfrentando.

A grosso modo definiria que usamos Interface quando precisamos que classes de diferentes origens (herança) tenham métodos em comum e possam ser acessados através do mesmo lugar.

A classe abstrata é utilizada quando você quer que uma classe que herde dela implemente alguns métodos, mas que também possam ter métodos implementados na própria classe abstrata.

Posso citar algumas vantagens de ambos, assim, pode tirar suas conclusões de qual utilizar e quando utilizar:

Classe Abstrata:

  • Não há necessidade de criar instâncias dela para chamá-la;
  • É usada para ser herdada, funciona como espécie de "superclasse".
  • Uma classe abstrata pode fornecer código completo, código padrão ou ter apenas a declaração de seu esqueleto (métodos completos ou incompletos) para ser posteriormente sobrescrita;
  • Se você incluir um novo método em uma classe abstrata você tem a opção de fornecer uma implementação padrão para ele;
  • Possui métodos de diversas visibilidade e métodos implementados ou abstratos

Interfaces:

  • Uma classe pode implementar diversas interfaces;
  • Não possui implementação, apenas assinatura, algo como definição dos seus métodos sem o corpo.
  • Uma implementação de uma interface pode ser incluída a qualquer classe de terceiros.
  • São além de um molde para uma classe, uma forma de implementar uma herança múltipla, já que C# não permite.

Espero que tenha esclarecido sua dúvida. Se algo não ficou claro, sinta-se confortável para perguntar novamente.

Abraços e bons estudos!