Complementando o artigo.
Quando você de fato começa a fazer testes unitários da sua aplicação (principalmente unitários), você entenderá a importância de interfaces, uma vez que elas são essenciais para realizar mocks.
Sobre a frase "não há o que garanta que essas classes tenham qualquer relação uma com a outra", eu não concordo. Se temos a seguinte interface:
public interface IConverter<T1, T2>
{
public T2 Convert(T1 value);
}
Qualquer classe que implemente essa interface será uma classe que sabe converter um tipo T1 em um tipo T2. Dessa forma, já relação entre elas.
A proposta dessas duas entidades (interface e classe abstrata) são muito diferentes, e caso quem leu o artigo ainda não tenha entendido, é super importante procurar mais informações (como no curso sugerido), para não fazer besteira.
Olá Arthur, tudo bem? Eu evito criar Interfaces pra todas as classes, apesar de saber que é um padrão em alguns projetos. Mas na hora de testar realmente as vezes não tem pra onde correr, mockar uma interface é muito mais prático.
Obrigado pelo complemento!