Java中的组合和聚合有什么区别?

问题描述 投票:-1回答:1

如果我正确理解组成和聚合是对象共享的关系。在合成中,没有父对象就不能存在从属对象。而在聚合中,从属对象可以不存在父对象而存在。在Java中,通过具有非静态内部类来实现组合,而在具有静态内部类或对象引用时可以实现聚合。如果我错了,请纠正我。浏览了很多网站,但只是感到困惑而没有得到满意的答案。

java oop object aggregation composition
1个回答
0
投票

协会关联是指多个对象之间的关系。它指的是对象如何相互关联以及它们如何使用彼此的功能。组合和聚合是两种关联类型。

组成组成是强大的关联类型。如果一个对象拥有另一个对象,并且没有所有者对象就不能存在另一个对象,则称该关联为复合。考虑人类有一颗心的情况。这里的人类对象包含着心灵,没有人类,心灵就无法存在。

汇总聚集是一个弱关联。如果两个对象可以独立存在,则关联被称为聚合。例如,一个Team对象和一个Player对象。团队包含多个玩家,但一个玩家可以不带团队而存在。

Example of Composition

    //Car must have Engine
    public class Car {
       //engine is a mandatory part of the car
       private final Engine engine;

       public Car () {
          engine = new Engine();
       }
    }

    //Engine Object
    class Engine {}


Example of Aggregation

//Team
public class Team {      
   //players can be 0 or more
   private List players;

   public Car () {
      players = new ArrayList();
   }
}
//Player Object
class Player {}
© www.soinside.com 2019 - 2024. All rights reserved.