RedHead90, спасибо за объяснения и примеры.
Цитата:
класс Character - это узел;
классы CharacterNPC и CharacterPlayer его наследники, но их различия всего в одной строке (ссылке на частные компоненты);
классы NPC и Player - компоненты, не имеющие общих корней и описывающие все те данные, что присущи лишь одной из сущностей.
|
Интересный подход. Но в случае если число свойств, различных для Player и NPC, невелико, то проблему раздутого класса не решает, а геморроя добавляет.
Я сам изначально вводил приватные переменные в классы-наследники (т.е. делал всё то же, но не в форме отдельного класса, а просто свойствами в имеющийся), а потом надоело мучиться и ловить исключения при обращении за ними в суперкласс Character. В итоге объявил всё в супере, а дальше уже разруливаю по ситуации переопределяемыми в наследниках сеттерами/геттерами.