Я не уверен, что вы пытаетесь достичь, не могли бы вы уточнить? Единственная причина для принудительного применения определенного конструктора или статического метода в разных классах - это попытка их динамического выполнения во время выполнения, это правильно?
Конструктор предназначен для конкретного класса, так как он предназначен для инициализации конкретных потребностей класса. Насколько я понимаю, причина, по которой вы хотите применить что-либо в иерархии классов или интерфейсе, заключается в том, что это действие / операция, относящаяся к выполняемому процессу, но может варьироваться в разных обстоятельствах. Я полагаю, что это предполагаемое преимущество полиморфизма, которого невозможно достичь с помощью статических методов.
Это также потребовало бы знания конкретного типа класса, для которого вы хотите вызвать статический метод, что сломало бы все полиморфное скрытие различий в поведении, которого пытается достичь интерфейс или абстрактный класс.
Если поведение, представляемое конструктором, предназначено для того, чтобы быть частью договора между клиентом этих классов, то я бы добавил его явно в интерфейс.
Если к иерархии классов предъявляются аналогичные требования инициализации, я бы использовал абстрактный базовый класс, однако он должен до наследующих классов определять, как они находят параметр для этого конструктора, что может включать в себя экспонирование аналогичного или идентичного конструктора. 1009 *
Если это предназначено для того, чтобы вы могли создавать разные экземпляры во время выполнения, то я бы рекомендовал использовать статический метод в абстрактном базовом классе, который знает различные потребности всех конкретных классов (для этого можно использовать внедрение зависимостей) .