类图 - 属性继承

时间:2010-11-14 02:23:36

标签: class model uml diagram

我需要继承一个类,我只需要继承选定的属性,这是可能的,还是只有在需要所有属性时才能从类继承?

谢谢,

克里斯。

2 个答案:

答案 0 :(得分:0)

听起来你正在寻找实现继承而不是接口继承。请参阅this thread以获取解释,如果仍然不清楚原因,请在下面注明。

鉴于您只想重复使用所选属性的子集,您最好使用Composition而不是Inheritance。

注意

它不能是接口继承(子类型),因为只通过“继承”属性的子集,子类实例不能替代超类实例。例如:假设子类未继承的超类公开属性A。在运行时,声明为超类类型的变量v将绑定到子类的实例。表达式然后引用v.A。完全合理的要求 - 但显然会失败。换句话说,你破坏了接口合同。谷歌“Liskov替代原则”了解更多信息。

答案 1 :(得分:0)

有可能。当超类定义属性时,任何子类都可以重新定义属性以具有[0..0]多重性。因此,子类只能继承它所需要的东西。 然而,正如@sfinnie所提到的,这打破了Liskov Substitution,所以你最好知道你在做什么!

我方便的UML 2.5规范草案说:

  

MultiplicityElement可以定义两个边界都为零的多重性。这将允许的基数限制为0;也就是说,它要求此元素的实例化不包含任何值。 [...]它适用于(但不限于)重新定义更常规分类器中存在的属性。