`

java组合和聚合的区别和联系

阅读更多

组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上:
比如A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象还会有另外的引用指向它,这种情况叫聚合。

现实生活中:
人和手,脚是组合关系,因为当人死亡后人的手也就不复存在了。人和他的电脑是聚合关系。

  1. class Hand{
  2. }
  3. class Computer{
  4. }
  5. 组合:
  6. class Person{
  7. private Hand hand;
  8. public Person(){
  9. hand = new Hand();
  10. }
  11. }
  12. 聚合:
  13. class Person{
  14. private Computer computer;
  15. public setComputer(){
  16. computer = new Computer();
  17. }
  18. }

可以说聚合是一种强组合的关系

 

组合与聚合的区别和联系: 
     首先,都是整体与部分的关系,组合的关系更强一点,对组合关系来说,如果失去部分,整体也将不存在了。 
代码实现上来看: 
     组合:在整体的构造器中实例化部分,这个部分不能被其他实例共享。整体与部分的生命周期是同步的。而聚合关系的部分,可以在构造器中通过参数传递的形式进行初始化。

从数据库的层面上看:     组合关系:需要级联删除,而聚合关系不需要。

分享到:
评论

相关推荐

    UML中依赖泛化关联实现聚合组合的Java实现

    UML中依赖泛化关联实现聚合组合的Java实现

    关联,聚合,组合的区别及C++实现

    在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单 独工作更大的语义。

    深入理解JAVA中的聚集和组合的区别与联系

    下面小编就为大家带来一篇深入理解JAVA中的聚集和组合的区别与联系。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧

    Java依赖-关联-聚合-组合之间区别_动力节点Java学院整理

    主要介绍了Java依赖-关联-聚合-组合之间区别理解,依赖关系比较好区分,它是耦合度最弱的一种,下文给大家介绍的非常详细,感兴趣的朋友一起看看吧

    企业java工程师测试题

    其他特征:抽象关联,聚合,组合,内聚,耦合 2. String是最基本的数据类型吗? String 和StringBuffer的区别? 答案:String不是一最基本的数据类型。 STRING的长度是不可变的,STRINGBUFFER的长度是可变的。 如果...

    12-JAVA类之间的关系

    JAVA类之间的关系思维导图,便捷整理思路,泛化、实现、依赖、关联、组合、聚合……

    写给大忙人看的JAVA SE 8

    2.4 提取子流和组合流 26 2.5 有状态的转换 27 2.6 简单的聚合方法 28 2.7 Optional类型 29 2.7.1 使用Optional值 29 2.7.2 创建可选值 30 2.7.3 使用flatMap来组合可选值函数 31 2.8 聚合操作 32 2.9 收集结果 33 ...

    Java数据库编程宝典3

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    Java设计模式 版本2

    Java设计模式,目录:前言,UML建模技术,深入浅出UML类图,从招式与内功谈起——设计模式概述,面向对象设计原则,工厂三兄弟之简单工厂模式,工厂三兄弟之工厂方法模式,工厂三兄弟之抽象工厂模式,确保对象的唯一...

    Java 设计模式

    java的设计模式大体上分为三大类: 创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元...

    2023java面试题大全及答案大厂面试经典问题

    包括基础的JavaSE内容(如类,对象,接口,继承,多态,封装,抽象以及更高级的一些概念,如组合、聚合及关联)、JavaWeb内容、MySQL数据库、Redis缓存、设计模式等等问题;可以说是非常全面的一份面试手册,希望对...

    java餐饮管理系统源码-pattern:设计模式扫盲,以身边故事来讲解设计模式

    在架构设计中,要注意组合、聚合和 依赖这三者的区别。 组合在 语中的含义是把若干个独立部分组成整体 各个部分都有其 立的使用 价值和生命周期。而类关系中的组合是一种完全绑定的关系,所有成员共同完成一件 使命 ...

    design-pattern-java.pdf

    树形结构的处理——组合模式(二) 树形结构的处理——组合模式(三) 树形结构的处理——组合模式(四) 树形结构的处理——组合模式(五) 装饰模式-Decorator Pattern 扩展系统功能——装饰模式(一) 扩展系统...

    elasticSearch查询语句DSL

    首先,我们将学习DSL的基本结构和语法规则,包括查询、过滤器、聚合和排序等核心概念。通过深入了解DSL的语法,您将能够灵活地组合不同类型的查询条件,以实现精准的数据检索。接下来,我们将探讨DSL的高级特性和...

    Java设计模式-面向对象七大设计原则

    例如:随着计算机的不断发展,程序学习这门技术也越来越重要,很多人都开启了...面向对象设计原则一共有七个:开闭原则、里氏替换原则、依赖倒转原则、单一职责原则、接口隔离原则、组合/聚合复用原则、迪米特法则。

    Java数据库编程宝典2

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    最新中农大线上作业Java语言与面向对象程序设计A-F(1).doc

    联合、组合和聚合 B.关联比较 C.多重 D.关联、聚合和泛化 参考答案:D 您的答案:A 9、通常消息包含三个方面的内容: ·要执行的方法的名称。 ·( ) ·方法所需的所有参数 A.发出消息的对象 B.发出的消息...

    Java数据库编程宝典4

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

    JAVA与模式

    Java接口 com.javapatterns.liskov 里氏代换原则 com.javapatterns.dip 依赖倒转原则 com.javapatterns.isp 接口隔离原则 com.javapatterns.carp 组合/聚合复用原则 com.javapatterns.lod ...

Global site tag (gtag.js) - Google Analytics