Предыдущие ответы уже затронули основные вопросы, но есть небольшая деталь, о которой стоит упомянуть.
У вас может быть фабрика, которая возвращает экземпляры (скрытых) подклассов абстрактного класса. Абстрактный класс определяет контракт на результирующем объекте, а также предоставляет реализации по умолчанию, но тот факт, что класс является абстрактным, не позволяет напрямую создавать его экземпляр, а также сигнализирует о том, что идентичность «реального» класса реализации не является опубликован.