am I going down an inherintly bad path
Я думаю, что в вашем втором примере (рабочие подклассы) вы определенно. Вы сопоставили каждый подкласс с определенным состоянием в суперклассе. Поэтому теперь каждый раз, когда вы хотите добавить состояние в суперкласс, вам нужно будет внести изменения в три местоположения (добавить состояние в суперкласс, добавить новый подкласс и изменить конструктор производного класса, чтобы добавить подкласс в список ).
Использование вложенных классов для доступа к закрытым членам действительно представляется допустимым (я никогда не делал этого лично), но ваш конкретный случай здесь не работает.
Что касается примера части тела. Поскольку все вложенные классы являются общедоступными, на самом деле вы мало что делаете, кроме пространства имен. Если эти классы расширяются и включают больше функциональности, вы можете просто обнаружить, что вложенные классы просто загромождают интерфейсы, и вы просматриваете код, чтобы найти что-то конкретное. Я также заметил, что, поскольку у вас есть вложенные классы, вы вынуждены нарушать соглашения об именах и называть свои классы строчными буквами (возможно, это был выбор). Но эти аргументы являются более поверхностными, чем что-либо на самом деле неправильно.
Если, конечно, вам не нужно было реализовать бестелесную руку. Затем создание руки с помощью следующего сбивает с толку, потому что нет тела / туловища / стороны. (Также обратите внимание на запутанный корпус).
arm newArm = new Body.torso.side.arm("");