Насколько я знаю, мы не можем создать экземпляр абстрактного класса
В этом ваша ошибка. Конечно, вы можете создать экземпляр абстрактного класса.
abstract class Animal {}
class Giraffe : Animal {}
...
Animal animal = new Giraffe();
Здесь есть экземпляр Animal.Вы создаете экземпляр абстрактного класса, создавая из него конкретный класс и создавая его.Помните, что экземпляр производного конкретного класса также экземпляр его абстрактного базового класса. Экземпляр Giraffe также является экземпляром Animal, даже если Animal является абстрактным.
Учитывая, что вы можете создавать экземпляр абстрактного класса, он должен иметь конструктор, как и любой другой класс, чтобы обеспечитьчто его инварианты выполнены.
Теперь класс static - это класс, создание которого вы фактически не можете создать, и вы заметите, что создание конструктора экземпляра в статическом классе недопустимо.