什麼是 Java 中的組合以及示例

已發表: 2021-04-09

Java 是一種通用語言,它通過在兩個類之間建立關係來支持面向對象的編程和代碼可重用性。 Java 中有兩種類型的關係或關聯用於重用代碼並減少從一個類到另一個類的重複性。

這些關係是 IS-A(繼承)和 HAS-A(關聯)。 雖然 IS-A 類之間存在緊密耦合,但 HAS-A 類是鬆散耦合的,更適合程序員。

HAS-A 關係在 Java中分為兩種類型,即聚合和組合 本文基於OOP的組合概念。 我們將看到許多關於組合如何編碼以及實現時獲得的優勢的真實示例。

目錄

Java中關聯或關係的簡要敘述

在面向對象編程中,對象相互關聯並使用它們之間的通用功能。 這就是Java程序中的繼承、關聯、聚合和組合主題的來源

Java中的繼承(IS-A)和關聯(HAS-A)

1. 繼承(IS-A)

IS-A 關係表示一個對像是另一個對象的類型。 它是使用“擴展”和“實現”關鍵字實現的。

示例: HP IS-A 筆記本電腦

2.協會(HAS-A)

HAS-A 關係表示一個類與另一個類有關係。 例如,A 類擁有 B 類的引用,並且可以訪問 B 類的所有屬性。

示例:人體 HAS-A 心臟

資源

資源

3.聚合與組合

Has-A關係或關聯可以分為聚合和組合。 聚合容器類和引用類可以獨立存在。 如果容器類被銷毀,則組合引用類將不存在。

讓我們舉個例子來理解聚合和組合。 汽車有它的零件,例如引擎、車輪、音樂播放器等。沒有引擎和車輪,汽車就無法運行,但沒有音樂播放器也可以運行。 這裡引擎和汽車是組合關係,汽車和音樂播放器是聚合關係。 在聚合的情況下,一個對象可以存在而不是主對象的一部分。

資源

Java中的組合

一個與另一個類之間存在強關係時,Java 中兩個相互關聯的對象之間就存在組合。 沒有所有者或父類,其他類就不能存在。 例如,“人類”類是 Heart和 lungs的組合 當人類物體死亡時,沒有任何部分存在。

組合是一種受限的聚合形式。 在組合中,一個類包含另一個類並依賴於它,因此如果沒有另一個類,它就不能在功能上存在。

Java中組合的實現

引擎和汽車的關係是使用 Java 類實現的,如下所示。 在 Java 中,'final' 關鍵字用於表示合成。 這是因為 'Owner' 對象期望部件對象可用並通過使其成為'final'來發揮作用

公共汽車{

私有最終引擎引擎;

公共汽車() {

引擎 =引擎();

}

}

引擎{

私有字符串類型;

}

讓我們再舉一個描述繼承和組合的例子。

資源

在這個程序中,Honda 類是 Car,並從 Car 類擴展而來。 汽車引擎對像用於本田類。

類汽車引擎{

公共無效StartEngine(){

System.out.println(“汽車引擎已啟動。”);

}

公共無效停止引擎(){

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

}

}

類車{

私有字符串顏色;

私人 int maxi_Speed;

公共無效汽車詳細信息(){

System.out.println(“汽車顏色=”+顏色+“;最大速度=”+maxi_Speed);

}

//設置汽車顏色

公共無效 setColour(字符串顏色){

this.color = 顏色;

}

//設置最大車速

公共無效 setMaxiSpeed(int maxi_Speed) {

this.maxi_Speed = maxi_Speed;

}

}

本田類擴展汽車{

公共無效本田開始(){

CarEngine Honda_Engine = new CarEngine(); //作品

Honda_Engine.startEngine();

}

}

公共類主要{

公共靜態無效主要(字符串[]參數){

本田 HondaJazz = new Honda();

HondaJazz.setColour(“黑色”);

HondaJazz.setMaxSpeed(160);

HondaJazz.carDetails();

HondaJazz.HondaStart();

}

}

輸出:

汽車顏色 = 黑色; 最大速度 = 160

汽車發動機已經啟動。

輸出是使用合成導出的,並顯示了 Honda Jazz 汽車的細節。

關聯的 UML 表示

Java中A類和B類之間的關聯、聚合和組合關係在UML圖中表示如下:

關聯:A—>B

作文:A—-<填充>B

聚合:A—-<>B

從世界頂級大學在線獲得軟件工程學位獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

Java 中組合的好處

在 Java 中使用組合設計技術有以下好處:

  1. “優先對象組合而不是類繼承”總是可行的。 類通過組合實現多態性和代碼重用。
  2. 組合是靈活的,您可以在運行時通過更改包含的對象來更改類實現,並更改其行為。
  3. 基於組合的設計具有較少的類。
  4. 類之間的“HAS-A”關係在語義上比“IS-A”關係更正確。
  5. Java 中的組合提供了更好的類可測試性,這在測試驅動開發中特別有用。
  6. 通過將多個對象組合成一個對象,可以在語言中實現“多重繼承”。
  7. 在組合中,方法或屬性名稱之間沒有衝突。

結論

Java 中的組合在編程時提供了許多優點,並且是最受歡迎的設計方法之一。 在這篇文章中,我們試圖通過真實的例子和實用的代碼讓你理解這個重要的概念。 組合提供了靈活性和健壯的代碼。 其代碼可重用性功能有助於避免代碼重複並實現成本效益。 這使其成為各種程序中廣泛使用的方法之一。

在計算機科學課程中通過upGrad 的理學碩士課程學習Java作文,該課程旨在讓您學習和提升您在軟件開發方面的技能。

合格

AB achelor's degree 50% 或同等分數。 不需要初始編碼經驗。

價錢

印度居民的計劃費用為 13 盧比,095/月,國際居民為 5999 美元。

踏上夢想的工作

申請機器學習與人工智能理學碩士