什么是 Java 中的组合以及示例

已发表: 2022-11-19

Java 编程语言的多功能性允许代码重用,同时减少类之间的重复性。 Java 通过在类之间建立关系来促进代码的可重用性,这些关系有两种类型:继承和关联。 虽然继承让我们实现一种是一种关系并从现有类创建一个新类,但关联或具有一种关系可确保代码的可重用性。

has-a关系又分为两类: Java中的聚合和组合 本文将探讨Java 中组合的概念,并通过示例帮助您理解其基础知识。

目录

Java 关系概述

Java 中的关系是指类相关的不同方式。 从广义上讲,Java 中有两种类型的关系:

  • 是一个关系
  • 有关系

Java 中的组合

资源

是一种关系(继承)

Java 中的继承特性让我们可以实现 is-a 关系。 在这种情况下,一个类继承了另一个类。 例如,如果类“Flower”继承了另一个类“Lily”,我们可以说类“Lily”与“Flower”具有 is-a 关系。 这也暗示百合是一朵花。

示例:百合“是”花,计算机“是”设备,等等。

有关系(Association)

has-a关系表示一个类使用另一个类的实例,这种关系在Java中称为关联。 例如,如果类 P 持有另一个类 Q 的引用,则意味着 P 可以访问类 Q 的所有属性。

示例:计算机“有”处理器,蜜蜂“有”刺等。

Java 中的关联是使用其对象的两个离散类之间的关系。 关系可以是以下类型:

  • 一对多:一个对象关联多个对象。
  • 一对一:一个对象与一个对象关联。
  • 多对多:许多对象与其他多个对象相关联。
  • 多对一:许多对象与一个对象相关联。

关联有两种类型:聚合和组合。

Java 中的组合

Java 中的组合是一种实现类之间 has-a 关系的设计技术。 在这个关联中,一个类包含另一个类。 而且,被包含类依赖于包含类,不能独立存在。 换句话说,一个类包含另一个具有相互依赖功能的类。

例如,类“Car”包含类“Engine”和“Battery”。 因此,'Car'与'Engine'和'Battery'处于has-a关系中,后两者不能在没有'Car'的情况下独立存在。

让我们考虑另一个现实生活中的例子。 人体有肾,器官离不开人体。 因此,如果我们认为“Human”是一个与“Kidneys”类具有关系的类,那么在 Java 示例中它就是组合,因为没有人体,肾脏不能独立存在。

upGrad 为您举办的独家软件开发网络研讨会 –

SAAS 业务——有何不同?

在 Java 示例中实现组合

现在考虑以下演示Java 中组合概念的程序 我们将把它分解成几个步骤以便更好地理解。

第 1 步:在第一步中,我们将创建一个类“Car”并声明和定义方法和数据成员。

类车

{

// 声明数据成员和方法

私有字符串颜色;

私有速度;

公共无效carFeatures()

{

System.out.println(“汽车颜色=”+颜色+”最大速度=”+速度);

}

public void setColor(字符串颜色)

{

this.color = 颜色;

}

public void setspeed(int 速度)

{

this.speed = 速度;

}

}

第 2 步:接下来,我们将创建一个扩展上述类“Car”的类“Fiat”。 “Fiat”类通过组合使用 FiatEngine 类对象的 start() 方法,这意味着“Fiat”类“有一个”FiatEngine。 菲亚特是一辆汽车,所以它从类“汽车”延伸而来。

类菲亚特扩展汽车

{

//继承Car类的所有属性

公共无效设置开始()

{

FiatEngine e = new FiatEngine();

e.开始();

}

}

第 3 步:在 Java 组合程序的下一步中,我们将创建一个类 FiatEngine,通过它我们可以使用上面类“Fiat”中的类对象。

FiatEngine类

{

公共无效开始()

{

System.out.println(“引擎已经启动。”);

}

公共无效停止()

{

System.out.println(“引擎已停止。”);

}

}

第 4 步:在程序的最后一步,我们将创建一个类 CompositionExample,创建一个“Fiat”类的对象,并对其进行初始化。

类 CompositionExample

{

public static void main(String[] args)

{

菲亚特 f = 新菲亚特 ();

f.setColor(“黑色”);

f.setspeed(175);

f.carFeatures();

h.setStart();

}

}

输出:

汽车颜色= 黑色最高速度= 175

引擎已经启动。

从世界一流大学在线学习软件开发课程。 获得执行 PG 课程、高级证书课程或硕士课程,以快速推进您的职业生涯。

Java 中的聚合和组合

Java中的聚合和组合是两种 has-a 关系,两者在类之间的依赖性方面有所不同。 在聚合中,容器类和引用类是独立存在的,而组合引用类没有容器类就不存在了。 因此,引用类在组合上依赖于它的容器类。

这是一个真实的例子来理解Java 中聚合和组合之间的区别 汽车有发动机、刹车、电池、前灯、音乐播放器等各种部件。虽然汽车可以在没有音乐播放器的情况下运行,但如果没有发动机或电池等重要部件,它就无法运行。 因此,我们可以说汽车和音乐播放器是聚合关系,而引擎和汽车是组合关系。

在 Java 中使用组合有什么好处?

现在您已经对 Java 中的组合概念有了基本的了解,下面概述了这种技术的好处:

  • Java 中的组合有助于代码的可重用性。
  • Java 中的组合让我们可以控制其他对象对客户端类的可见性并重用我们需要的东西。
  • 虽然 Java 不支持多重继承,但我们可以使用组合来解决它。
  • Java 中的组合是灵活的,允许我们在运行时更改成员对象以改变程序的行为。
  • Java 组合提供了更好的类可测试性,这是一个在测试驱动开发中特别有用的特性。
  • 基于组合的设计具有更少的类。

软件工程热门课程和文章

热门节目
软件开发执行 PG 课程 - IIIT B 区块链证书课程 - PURDUE 网络安全证书计划 - 普杜 计算机科学硕士 - IIIT B
其他热门文章
2021-22 年美国云工程师薪资 AWS 解决方案架构师在美国的薪水 美国的后端开发人员薪水 美国的前端开发人员薪水
Web开发人员在美国的薪水 2022 年 Scrum Master 面试问题 如何在 2022 年开始网络安全职业? 工程专业学生在美国的职业选择

结论

如果类之间的关系是 has-a 并且您希望重用代码,那么Java 中的组合是一项出色的技术。 总而言之,以下是您需要记住的有关 Java 组合的一些要点:

  • Java 中的组合表示一种 has-a 关系。
  • 在组合中,一个类包含另一个类,被包含类依赖于包含类,不能独立存在。
  • 组合关联中的两个实体相互依赖。
  • 我们可以通过引用其他对象的实例变量来实现 Java 中的组合。

通过 upGrad 的 Executive PG Program in Software Development 提升您的职业生涯

软件开发是年轻专业人士最赚钱的职业选择之一。 如果您已经在该行业工作或希望开始,您必须注册 upGrad 的软件开发执行 PG 计划 该计划向您传授热门技能以及十种收入最高的编码语言和工具。 您可以从四个专业中进行选择,包括区块链开发、全栈开发、DevOps 和云后端开发。

除了学习收入最高的编程语言外,您还可以从事 30 多个案例研究和项目。 世界一流的教职员工为该课程提供现场讲座和在线课程。 全天候提供学生支持。

立即申请,尽早获得课程录取资格!

Java中的组合和继承是什么?

Java 中的组合和继承是在对象和类之间建立关系的两种编程技术。 组合表示与一个类包含另一个类的关系。 另一方面,继承表现出一种 is-a 关系,其中一个类获取另一个类的属性和行为。

Java 中组合的目的是什么?

Java 中的组合允许代码可重用性并提供更好的类可测试性。 尽管 Java 不支持多重继承,但组合提供了一种方法。

组合是 OOP 吗?

组合是面向对象编程中的一个基本概念。 它描述了一种 has-a 关系,其中一个类通过实例变量引用其他类的一个或多个对象。