Я бы спросил, почему ваше имя класса такое загадочное. «Номер» для меня понятен, а «П» предлагает «телефон», но что мне говорит «СТН»? Несколько дополнительных нажатий клавиш сделают этот класс более самодокументированным.
Я бы также спросил о логике конструктора по умолчанию, который не инициализирует базовые элементы данных каким-либо значением. Я думаю, что конструктор по умолчанию должен иметь разумное значение по умолчанию, если это возможно.
Я чувствую, что вариант 1 излишний. Я не думаю, что наследование делает эту модель яснее или лучше. Я не вижу, как это нарушает подстановку Лискова, которая требует, чтобы вы могли использовать подкласс в любой ситуации, которая требует базового класса. Методы отображают 1: 1, насколько я вижу. Как нарушается Лисков?
Вариант 2 говорит, что это два отдельных класса без каких-либо отношений. Мне это не кажется правильным.
Вся эта работа предполагает, что ваша проблема потребует, чтобы вы использовали оба класса. У вас будут ситуации, когда ведущий ноль НЕ требуется, а в других - где он есть. Это правда? Или вы всегда будете требовать ведущего нуля?
Мне все равно, какие у вас варианты. Я бы предпочел интерфейс, статическую фабрику или даже изменение класса, который у вас есть, на все, что вы предлагаете. Это похоже на простую проблему форматирования. Вы храните номер с ведущим нулем? Если нет, может быть, это просто проблема с представлением.