我有一些关于“关联、聚合和组合”的困惑。虽然许多网站和论坛都讨论过这个话题,但是在阅读其中一些内容后,我变得更加困惑了。
我想知道以下几点是否正确:
1.) 聚合 - 整体被销毁时仍然存在。例如,一个 Engine
可以与或没有 Car
存在。
2.) 组合 - 如果对象被销毁,则不存在。例如,没有 House
就不能存在 Room
。
3.) 关联 - 我不确定在哪些情况下应该使用它。有人可以发表评论吗?
当涉及编写聚合、组合和关联的 Java 代码时
4.) 聚合
Class Car {
private Engine engine;
public void setEngine(Engine engine){
this.engine=engine;
}
public Engine getEngine(){
return engine;
}
}
我认为如果这是一个聚合关联,那么应该定义访问器和更改器。这个想法正确吗?
根据我的聚合定义,我提到如果Car
对象被销毁,就可以访问Engine
。但是,在上面的代码中我没有看到这种情况发生。如果Car
对象被销毁,将无法像car.getEngine()
那样访问引擎。那么这是如何实现的呢?
组合
Public House {
private Room room;
Public House (){
room = new Room (int noRooms, String nameOfHouse);
}
}
我认为如果是组合关系,则不应该有访问器和修改器函数,并且对象Room只能在构造函数中创建。包含room对象的实例方法必须是私有的,我正确吗?
注:再次强调,我已经使用谷歌并访问了许多网站/论坛来解决我的疑虑。类似的问题在许多论坛上发布过,但我仍然对此感到更困惑。有人可以帮助我解决疑虑吗?谢谢!