1

可能的重复:
继承与聚合

该网站的一位合作伙伴告诉我,我需要“聚合而不是继承”作为解决方案。

我调查了每个人的想法,但“过度继承”?这是我的疑问。有人可以给我举例说明这是什么意思?

提前致谢。

4

3 回答 3

2

这意味着一个类应该包含另一个类的实例,而不是从它继承。

继承示例

class Engine
{
}

class vehicle extends Engine
{
}

聚合示例

class Engine
{
}

class Vehicle
{
Engine powerplant;
}

我在我们的教科书中写了一篇关于不良继承示例的危险的帖子。我发现了一个有用的例子,联邦航空管理局根据其对飞机及其能力的分类方式对法规进行细分。

于 2012-06-29T14:25:36.593 回答
1

正如评论中提到的,这意味着尽可能使用聚合而不是继承。更喜欢组合而不是继承中给出了解释?

更喜欢组合而不是继承,因为它更具延展性/以后易于修改,但不要使用始终组合的方法。通过组合,可以很容易地通过依赖注入/设置器来动态改变行为。继承更加严格,因为大多数语言不允许您从一种以上的类型派生。

如果您想知道组合和聚合之间的区别。

于 2012-06-29T14:30:26.083 回答
1

聚合比使用继承更不容易出错(继承可能导致难以维护的代码,并且难以理解)

此外,当您继承一个类时,您还将它的所有公共成员公开给派生类的客户端(您可以改为使用聚合并将字段设为私有以限制客户端对该对象的访问)

于 2012-06-29T14:30:56.397 回答