2014-01-17 33 views
0

我熟悉OOP的实际方面。现在我正在写一篇技术文档,并质疑我对术语的使用。命名法:OOP中的类型关系

enter image description here

把这个类层次结构。每个类都有零个,一个或多个(多继承)类,它直接从中派生出来。对于B,这是A.我会说A是B的基类超类(可互换)。

相反,一个类可以有任何数量的类直接从它派生。我会说B和C是A的派生类小类,又可互换。

然而,还必须有一个术语来指所有类别的一个类直接或间接地从继承而来。从D的角度来看,你会如何称呼{A,B}?

而且我错过了所有类的另一个术语直接或间接地从一个类派生的。你从A的角度如何称呼{B,C,D,E}?

+0

你在推翻它。 _Derived_,_child_,_subclass_都是有效的术语,它告诉你B/C/D/E类继承的事实A.直接或间接的后代,由于Liskov替换原理,在实践中应该没有关系 – MikeSW

回答

0

好问题。在这种情况下,A是根类,因为所有其他类都从它继承。所有对象下降从A,或者是A的直接或间接子类。相反也是如此。 B是D的直接超类,A是间接超类。我想你可以使用祖先作为下降/后代的反义词,但我以前没有见过。

+0

这意味着术语“子类”/“超类”本身是不明确的。具体来说,必须说“直接”与“间接”子类/超类。我感觉合理。 –