Глядя на это, я впервые чувствую, что ваша модель немного сложна.
В слове есть строка, описывающая само слово, которое хранится в объекте Word, вместе с классом, чтобы сказать, что это существительное, глагол, прилагательное и т. Д. Другим свойством Word является длина строки, хранящейся в Word. объект.
Думайте о вещах с точки зрения отношений "есть" и "есть", и вы можете устранить большую сложность.
Например, зачем вам WordDescriptor, расширяющий AbstractWord? Будет ли слово меняться с глагола на прилагательное? Я думал бы, что тип слова был установлен, когда объект был создан, и не изменился бы во время жизни объекта Word. Если у вас есть объект Word для слова «Австралия», то вид слова не изменится в течение срока службы объекта.
Хм. Возможно, у вас может быть объект Word, представляющий слово «кора» после создания экземпляра объекта с типом «глагол» для описания звука, издаваемого собакой. Затем вы понимаете, что вам действительно нужно иметь объект Word для представления существительного, описывающего покрытие дерева. Возможно, но может существовать как кора собаки, так и кора дерева.
Так что я думаю, что выбранная вами модель слишком сложна, и ваш вопрос можно решить, вернувшись назад и упростив исходную объектную модель.
Начните с того, чтобы задать себе вопрос по каждому из аспектов наследования вашей базовой модели.
Когда я говорю, что класс B расширяет класс A, могу ли я сказать, что класс B "есть-a", класс A и что я специализируюсь на его поведении?
Например, базовый класс Animal может быть расширен для предоставления специализированного класса Kangaroo. Тогда вы можете сказать, что «кенгуру» - это «животное». Вы специализируете поведение.
Затем посмотрите на атрибуты, у кенгуру есть атрибут Location, чтобы описать, где он находится. Тогда вы можете сказать, что у кенгуру есть «есть». Расположение кенгуру "is-a" не имеет смысла.
Точно так же длина слова "имеет-а". И утверждение «длина слова» просто не имеет смысла.
Кстати, все австралийские ссылки в этом посте являются намеренными, чтобы отметить День Австралии, который сегодня 26 января!
НТН