Диаграммы классов - Наследование атрибутов - PullRequest
0 голосов
/ 14 ноября 2010

Мне нужно наследовать от класса, и мне нужно только наследовать выбранные атрибуты, возможно ли это или вы можете наследовать от классов, если вам нужны все атрибуты?* Крис.

Ответы [ 2 ]

0 голосов
/ 25 июля 2013

Это возможно.Когда суперкласс определяет атрибут, любой подкласс может переопределить атрибут, чтобы иметь кратность [0..0].Таким образом, подкласс может наследовать только то, что ему нужно. Однако , как упомянул @sfinnie, это нарушает Подстановка Лискова , так что вам лучше узнать, что вы делаете!имейте в виду:

Элемент MultiplicityElement может определять кратность, обе границы которой равны нулю.Это ограничивает допустимое количество элементов 0;то есть требуется, чтобы экземпляр этого элемента не содержал значений.[...] Он применяется (но не ограничивается) переопределением свойств, существующих в более общих классификаторах.

0 голосов
/ 14 ноября 2010

Звучит так, будто вы ищете наследование реализации, а не наследование интерфейса.См. эту ветку для объяснения, также обратите внимание на ниже, если до сих пор не ясно, почему.

Учитывая, что вы хотите повторно использовать только подмножество выбранных атрибутов, вам, вероятно, будет лучше использовать Composition вместо Inheritance.

Примечание

Это не может быть наследование интерфейса (подтип), поскольку, только «наследуя» подмножество атрибутов, экземпляр подкласса не может быть заменен дляэкземпляр суперкласса.Например: предположим, что открытое свойство суперкласса A не наследуется подклассом.Во время выполнения переменная v, объявленная как тип суперкласса, привязывается к экземпляру подкласса.Затем выражение ссылается на v.A.Совершенно разумная просьба - но она явно провалится.Другими словами, вы нарушили контракт интерфейса.Google 'Принцип замещения Лискова' для получения дополнительной информации.

...