什么是'聚合继承'?

时间:2012-06-29 14:21:05

标签: c# inheritance aggregation

  

可能重复:
  Inheritance vs. Aggregation

本网站的一名参与者告诉我,我需要'聚合继承'作为解决方案。

我调查了每个人的想法,但是“过继承”?这是我的疑问。 有人可以告诉我这是什么意思的例子吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

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

继承示例

class Engine
{
}

class vehicle extends Engine
{
}

聚合示例

class Engine
{
}

class Vehicle
{
Engine powerplant;
}

我在教科书中写了一篇关于dangers of poor inheritance examples的帖子。我找到了一个有用的例子,说明联邦航空管理局根据它如何对飞机及其能力进行分类来细分法规。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

正如评论中所提到的,它意味着在可能的情况下使用聚合而不是继承。 Prefer composition over inheritance?

中给出了解释
  

首选组合而不是继承,因为它更具延展性/易于修改,但不使用compose-always方法。通过组合,可以使用依赖注入/设置器轻松更改行为。继承更加严格,因为大多数语言都不允许您从多种类型派生。

Difference between composition and aggregation如果您想知道。

相关问题