Действительно ли каждый подкласс представляет собой концепцию, отличную от суперкласса? Если единственное, что изменяется, это инициализация, а не данные или поведение в более поздней версии, не могли бы вы просто добавить параметры в конструктор для управления этой инициализацией?