`
Frederic
  • 浏览: 53727 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java 中聚合与组合以及has a、is a关系说明

阅读更多

概念

聚合:表示两个对象之间是整体和部分的关系,部分的生命周期可以超越整体。如电脑和鼠标,就可以用一下图形表示:


组合
表示两个对象之间是整体和部分的关系,部分的生命周期不能超越整体,或者说不能脱离整体而存在。组合关系的“部分”,是不能在整体之间进行共享的。如人和眼睛的关系:

不过,如果你要说,眼睛可以移植,是不是说可以脱离人而存在,它们就不是组合关系了?其实,UML中对象的关系都是在相应的软件环境或实际场景下定义的,这里区别聚合和组合的关系,关键还是在于它们之中整体和部分的关系强、弱,以及它们之间的依附关系。如果刚才说眼睛可以移植给别人,那你也可以把它认为是聚合,这都要结合实际场景来说明。(以上内容来自:
http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html

is a 关系,那么它是一个集成关系;比如: is a 比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。

has a关系,那么它是一个聚合关系;比如: has a 再比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承。

聚合和组合都属于关联,很难区分,但是只要记住一点,区分它们就容易多了:

       处于聚合关系的两个类生命周期不同步,则是聚合关系;处于组合关系的两个类的生命周期同步;
eg
聚合关系,A创建的时候,B不一定创建;当A消亡时,B不一定消亡。
class A{
   private  B;
}
class B{
....
}
组合关系,当创建一个A对象时,也会创建一个B对象;当A对象消亡时,作为A的属性的B对象也会消亡。
class A{
private b=new B();
....
}
class B{
....
}

 

 

 

 

由于个人知识水平有限,如果有错误之处,欢迎各方豪杰指正!希望能广交朋友,多多交流!谢谢!----竹林清幽

 

 

----------------------------------------------------------------------------------------------------------------------------------
 

本人现就职于广州砺锋信息科技有限公司,欢迎咨询!

公司简介

砺锋科技,Java培训官方网站—Java培训,软件培训,人才外包服务

|全国Java培训和技术服务的领导者

|旨在循序渐进将零基础的人用最短的时间最有效的方法打造为 Java领域的顶级开发与创新型人才

 

 

 

 

 

 

 

2
9
分享到:
评论

相关推荐

    2022年Decorator模式中遭遇继承与聚合Java教程.docx

    继承是一种“is-a”关系,而组合则是一种“has-a”关系。在Decorator模式中,子类(Decorator)继承父类(Component),同时持有一个父类对象的引用,这就是继承与组合的结合。这种方式允许我们在运行时动态地给对象...

    java的里氏代换原则

    在决定使用继承还是聚合时,Is_A 和 Has_A 分别代表“是”和“具有”的关系。如果一个类B是另一个类A的特殊情况,即B "是" A的一种,那么可以使用继承(B extends A)。例如,汽车"是"交通工具的一种。而如果类B...

    2019-8-11-java 类之间的四种关系详解1

    Java 类之间的关系是面向对象设计中的关键概念,它们定义了类如何互相协作以实现复杂的系统。根据 UML(统一建模语言),类之间的横向关系主要包括四种:依赖、关联、聚合和组合。这些关系反映了不同层次的强弱和...

    浅析Java中的继承与组合

    继承适合于类间存在“is-a”关系(例如,`Student`是`Person`的一种类型),而组合适用于“has-a”关系(`Student`拥有一个`Person`属性)。此外,组合通常被认为比继承更安全,因为它降低了类之间的依赖性,使得...

    Java中的30个概念

    - **类之间的关系**:依赖(use-a)、聚合(has-a)和继承(is-a)是类之间常见的关系,继承体现了“is-a”关系。 - **构造器**:构造器用于创建和初始化新对象,每个类都有一个与之同名的构造方法。 这些概念...

    简单谈谈Java类与类之间的关系

    在 Java 中,类与类的关系主要包括依赖(uses-a)、聚合(has-a)和继承(is-a)这三种主要类型。 1. 依赖(uses-a): 依赖关系指的是一个类在实现其功能时需要使用另一个类的服务。例如,在在线书店订单系统中,...

    高质量java程序设计读书笔记

    本文将基于"高质量java程序设计读书笔记"的主题,深入探讨Java编程中的异常处理以及面向对象编程(OOP)中的继承和组合设计原则。 首先,异常处理是Java程序设计中的重要组成部分,它提供了一种结构化的方式来处理...

    学习Java的30个基本概念.doc

    类之间的关系有三种主要类型:依赖关系(use-a)、聚合关系(has-a)和继承关系(is-a)。 构造器是创建和初始化对象的关键,它们的名字与类名相同,用于在创建对象时进行必要的初始化工作。例如,`new Data()`会...

    java 设计模式试题

    对于违反里氏替换原则的两个类,可以通过多种方式解决,如创建一个新的抽象类作为超类(A),将继承关系改为委托关系(B),或是区分“is-a”和“has-a”关系(C)。这些方法可以帮助重构代码,使其更加符合面向对象的原则...

    Java软件开发实战 Java基础与案例开发详解 7-1 面向对象的分析与设计简介 共11页.pdf

    - **聚合**:一种特殊的关联,表示“has-a”关系,但聚合关系中的对象可以独立存在。 - **组合**:也是“has-a”关系的一种形式,但是组合关系中的对象不能独立存在。 **3.2 关系的实现** - **继承**:通过extends...

    java编程的一些总结.doc

    - **has-a**:聚合关系。 - **is-a**:继承关系。 #### 构造器 构造器用于初始化对象,可以有零个、一个或多个参数。一个类可以有多个构造器,但构造器没有返回值。 #### 重载与重写 - **重载**:方法名相同,...

    JAVA_开发技术文档.DOC

    6. **类间关系**:use-a、has-a和is-a,分别表示依赖、聚合和继承关系。 构造器是创建和初始化对象的关键,例如,`Data`类的构造器可以这样使用:`Data today = new Data();` 这里`today`是一个变量,`new Data()`...

    java 30个基本概念

    6. **类之间的关系**:类之间的关系包括依赖(use-a)、聚合(has-a)和继承(is-a)。继承体现了“子类是父类的一种”的关系,聚合则表示一个对象包含另一个对象。 7. **构造器(Constructor)**:构造器用于创建...

    JAVA相关基础知识

    组合则是“has-a”关系,对象间通过组合实现功能,保持了类的独立性,是黑盒复用,更加灵活且松耦合。 在实际开发中,合理选用继承和组合能提升代码的可维护性和扩展性。根据类之间的关系和代码复用的需求,选择...

    UML用 java代码表示

    本文将深入探讨类与类之间四种基本关系——泛化、关联、依赖和聚合,并提供相应的Java代码示例。 ### 1. 泛化(Generalization) 泛化表示类与类之间的继承关系,或者接口与接口之间的继承关系,以及类对接口的...

    JAVA中的继承学习总结

    - **聚合关系(has-a)**:一个类包含另一个类的对象作为成员。 - **继承关系(is-a)**:表示“是一个”的关系,子类继承父类的所有公开和受保护的属性和方法。 #### 四、继承示例 假设我们有两个类:`Person`和`...

    优质java课件 java程序设计教程(第6版)06.最后一次课 静态修饰(共21页).ppt

    聚合表示类A包含类B的一个实例("has-a"关系);继承则是类A是类B的一种("is-a"关系)。继承将在后续章节详细探讨。 `this`引用在Java中用于在方法内部引用当前执行方法的对象。当在一个方法中使用`this`,它会...

    java基本概念 适用于初学者

    6. **类间关系**:类间的关系包括依赖关系(use-a),聚合关系(has-a)和继承关系(is-a)。继承关系是类之间的一种层次结构,子类不仅可以拥有父类的属性和方法,还可以添加自己的特性。 7. **构造器**:构造器...

    JAVA的23种设计模式总结[整理].pdf

    聚合是"Has-a"关系,用空心菱形表示,表示不稳定的包含;组合是"Contains-a"关系,用实心菱形表示,表示强的包含,部分与整体的生命周期紧密相连。 创建型设计模式是关于对象创建的方法,主要分为简单工厂模式和...

Global site tag (gtag.js) - Google Analytics