组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:
比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。
在实际写代码时组合方式一般会这样写:
A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的B类的对象也随之消亡。
聚合方式则是这样:
A类的对象在创建时不会立即创建B类的对象,而是等待一个外界的对象传给它
传给它的这个对象不是A类创建的。
现实生活中:
人和人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系。
class Hand{
}
class Computer{
}
组合:
class Person{
private Hand hand;
public Person(){
hand = new Hand();
}
}
聚合:
class Person{
private Computer computer;
public setComputer(){
computer = new Computer();
}
}
分享到:
相关推荐
### UML中依赖、泛化、关联、聚合与组合的Java实现详解 #### UML基础知识概览 统一建模语言(UML)作为一种图形化的标准化建模语言,为软件开发提供了强大的可视化工具,帮助开发者理解、设计和记录软件系统。UML...
2. 执行聚合:通过服务类或本地数据处理方法执行聚合操作,将点对象组合成聚合对象。 3. 创建聚合符号:根据聚合对象的数量,创建代表聚合数量的符号,如圆圈大小、标记文字等。 4. 显示聚合图层:将聚合后的图层...
在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单 独工作更大的语义。
### UML学习之依赖、关联、聚合、组合与继承 #### 一、泛化(Generalization) **概念:** 泛化表示的是类与类之间的继承关系、接口与接口之间的继承关系,或者是类对接口的实现关系。在UML中,泛化关系通常用一个带...
Java依赖、关联、聚合、组合之间的区别详解 在 Java 编程中,了解依赖、关联、聚合、组合之间的区别是非常重要的。这些概念都是 Java 面向对象编程的基础知识,正确理解它们可以帮助开发者设计出更加灵活、可维护的...
与聚合类似,组合在代码上与关联无明显差异,主要依靠语义判断。 在UML中,这六种关系的强度大致为:组合 > 聚合 > 关联 > 依赖。理解这些关系并能正确地应用它们可以帮助开发者设计出更具灵活性和可扩展性的软件...
UML 中继承、实现、依赖、关联、聚合、组合的联系与区别 UML 中的继承关系是指一个类继承另外一个类的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系。在 Java 中此类关系通过...
UML类图关系泛化、继承、实现、依赖、关联、聚合、组合 UML类图关系是Unified Modeling Language(统一建模语言)的核心概念之一,用于描述系统中的对象之间的关系。本文将对UML类图关系中的泛化、继承、实现、依赖...
将所有条件组合起来,形成聚合查询语句: ```java DBObject Group = new BasicDBObject("$group", Select); ``` 执行查询 使用 `MongoTemplate` 执行聚合查询: ```java AggregationOutput Output = mongoTemplate....
总而言之,"Java思维导图"可能涵盖了这些核心概念,包括但不限于类的定义、继承、接口、访问修饰符、关联关系、聚合与组合、方法以及面向对象的三大原则。通过深入学习这张图,开发者可以更好地理解和应用Java的类...
标题中的“遭遇继承与聚合”指的是Decorator模式在处理继承和组合关系时可能遇到的问题。继承是一种“is-a”关系,而组合则是一种“has-a”关系。在Decorator模式中,子类(Decorator)继承父类(Component),同时...
Maven的聚合功能则用于管理多个相关项目,把它们组合成一个整体。这主要通过`<modules>`标签来实现,它允许在一个POM中列出一系列子模块,使得我们可以一次性构建这些模块。聚合POM并不直接影响项目的构建,但它提供...
Java与模式的结合,意味着我们将探讨如何在Java编程中应用这些设计模式。设计模式分为三类:创建型模式(如单例、工厂方法、抽象工厂)、结构型模式(如适配器、装饰器、代理、桥接、组合、外观、享元)和行为型模式...
- CompletableFuture:学习Java 8提供的异步编程工具,实现复杂的并发任务组合。 6. **高级UI** (lab6参考答案.doc) - JTable与Swing表格:了解如何在Swing应用中展示和操作表格数据。 - Swing组件的定制与美化...
学习者会学习如何定义类,创建对象,并理解类之间的关系,如关联、依赖、聚合和组合。 3. **异常处理**:Java中的异常处理是编程实践中必不可少的一部分。学习者会学习如何使用try-catch-finally语句块以及不同的...
与组合关系相比,聚合关系更加灵活,部分对象可以属于多个整体对象。 - **定义**:聚合是一种特殊的关联,用于表示整体和部分之间的关系。 - **特点**: - 部分对象可以独立于整体对象存在。 - 整体对象和部分...
Stream可以串联起来形成一个操作管道,通过这些管道可以进行聚合操作,如查找、过滤、映射和组合。Stream API的设计非常适合函数式编程,因为它鼓励使用声明式编程风格,而不是命令式风格。 4. **Optional类**: ...
这些概念包括类与类之间的各种关系,如继承、关联、聚合和合成,以及设计原则,如“开-闭”原则、里氏代换原则、依赖倒转原则、接口隔离原则、组合/聚合复用原则和迪米特法则。 1. **继承关系**:继承是面向对象...
在Java编程语言中,类与类之间的关系是构建复杂系统结构的基础,这些关系不仅限于继承和封装,还包括了关联、依赖、聚合和组合等多种形式。以下是对这些关系的深入探讨: ### 1. 关联关系(Association) 关联关系...
组合,又称“聚合”,是一种类与类之间松散耦合的设计模式。它强调一个类可以包含其他类的实例,而不是扩展它们。例如,`Student`类可以通过实例化`People`类来实现,如下所示: ```java class Student { People ...