我似乎无法理解其中的差异,因为即使我的讲义说它们是对立的,它们看起来与我非常相似。
如果我们以此为例:
显然,绿色区域是概括,而红色区域是专业化。但我不明白,因为它让我觉得它们都可以被视为概括。
有人可以帮我澄清一下吗?
答案 0 :(得分:1)
这取决于你如何解释盒子的方向性。泛化和专业化是彼此的确切对立,或者说是同一枚硬币的两面。泛化是指获取一堆类,提取它们的共享属性并将它们放在超类或基类中的过程(术语取决于您最喜欢的编程语言)。专业化是指将单个类别拆分为两个或多个彼此不同的实例的过程。
在您的示例中,如果您的数据模型是以Person类开始的,那么稍后您会发现,谈论“Persons”对于您的目的来说过于通用。然后介绍4种不同类型的人员,即学生,总参谋部,讲师和导师,所有这些人都具有与人相同的属性。此过程称为专业化。如果那时你决定其中3种类型共享一些相同的属性,并引入另一种类型来处理它,那么该过程如果被称为泛化。
但是在一天结束时,这两个术语都代表了对象之间的继承关系。你可以说X是Y和Z(泛化)的父,你可以说Y和Z是X的子(特化)。