использование абстрактного класса вместо интерфйса так себе совет, классический пример: два высокоуровневых сервиса требуют каждый от своей зависимости определенной сигнатуры методов, каждый описывает интерфейс для зависимости, низкоуровненвый сервис отвечающий за определенный домен может одновременно имплементить оба интерфейса, как ты на абстрактном классе это сделаешь? никак