lavezzi1, если добавить имена элементам - не пустая. Можете перебрать значения с помощью formData.values, получить конкретное значение с помощью formData.get и т.д. и т.п.
Vlad Osadchy, свойства _Name, _TypeVlasn, _HeadSurname. Объявлены и в классе Base, и в унаследованном от него Education. В конструкторах базового класса вы им назначаете значения. А в конструкторах дочернего - нет.
Vlad Osadchy, "ничего не работает" - это разговор ни о чём. И одного удаления недостаточно - либо работайте с унаследованными свойствами в дочернем классе через геттеры/сеттеры, либо измените модификаторы доступа в базовом классе.
Vlad Osadchy, не знаю, что там у вас за пример, но свойства, значения которых вы возвращаете, зачем-то объявлены дважды - в базовом классе и в дочернем. При создании объекта дочернего класса значения устанавливаются только для тех свойств, которые принадлежат базовому классу. А при получении значений используются свойства принадлежащие дочернему классу - неинициализированные. Это почему "индексатор ничего не выводит".
Теперь символ подчёркивания. В базовом классе у вас объявлены геттеры/сеттеры с именами как у свойств, только без символа подчёркивания - то есть, удаление символа подчёркивания превращает обращение к свойству дочернего класса в вызов геттера базового класса, который возвращает значение свойства из базового же класса.
Так что повторное объявление свойств в дочернем классе лучше бы вырезать. Если хотите обращаться к ним напрямую в методах дочернего класса - измените в базовом классе модификаторы доступа на protected.
Что еще? Ах да, почему сеттеры кривые. Так ведь не работают же. Вы ими пробовали воспользоваться?