Вы смешиваете наследование (IS-A) с контейнерами (HAS-A) и вложенными объявлениями.С наследованием вы просто создаете расширенный класс.Если вы создаете базовый класс, этот объект не знает о каких-либо расширениях, включая классы с вложенными объявлениями классов.
Нет причин использовать вложенные классы, если вам не нужно скрывать имя типа вложенных классов из общего пространства имен.В противном случае вложенный класс ведет себя идентично, как если бы вы объявили его, не вкладывая его.