Если класс не имеет потомков, но от него могу наследоваться другие классы, то можно назвать это абстрактным классом.
А если класс не имеет потомков и используется только для приватных методов, это тоже абстрактный класс?
Нет, абстрактный класс - это класс, который может иметь реализацию и просто объявление методов и свойств
Все дочерние классы обязаны осуществить реализацию объявленных в абстрактном классе методов
Отличие его от интерфейса в том, что несколько интерфейсов может быть использовано одним классом, точно так же дочерний класс обязан иметь реализацию всех объявленных в интерфейсе методов и интерфейс не может содержать свойств
Абстрактные классы используй, если надо использовать его для тесно связанных классов, интерфейс для несвязанных классов