什麼是 Java 中的組合? 有例子
已發表: 2023-01-27目錄
Java 中關聯的基礎知識:
關聯可以在 Java 中定義為使用不同對象的兩個單獨類之間的互連。 Java關聯管理的關係類型有:
- 一對一:每個父類只存在一個派生類。
- 一對多:一個父類可能有多個子類。
- 多對一:一個子類可能與多個超類關聯。
- 多對多:多個父類可能與單個子類相關聯,更多數量的子類可能與單個父類相關聯。
一旦建立了關係,派生類就會與各自的基類進行通信,以重用它們的特性和屬性。 Java 中有兩種類型的關聯。 它們是聚合和組合。
與組合相比,Java 中的聚合是一個更通用的過程。 這些形式基於類之間支持的關係類型。
Java 組合簡介:
Java 中實現 Has-A 關係的設計技術稱為組合。 繼承的過程用於重用代碼。 Java 中的組合可以使用引用其他對象的實例變量來完成。 如果一個對像以這樣一種方式構成另一個對象,即構成對像沒有主要對象的存在就不能存在,這種關係被稱為組合。 更具體地說,組合是一個方面,它藉助實例變量來描述兩個或多個類之間的引用。 在這裡,應該在使用即時變量之前創建實例。 讓我們以圖書館為例來清楚地理解“組合”的概念。
圖書館裡有很多書。 每本書都有不同的作者和書名。 圖書館還應該有一份參考書單。 圖書館還有幾本與同一主題或不同主題相關的書籍。 在這裡,圖書館對應於主類,書籍可以關聯到派生類。 書籍與圖書館之間的關聯或關係可視為構成。 這是因為類“Books”完全依賴於類庫。 例如,如果圖書館被摧毀,那麼裡面所有的書也會被摧毀。
查看我們的免費技術課程,在競爭中脫穎而出。
探索我們的熱門軟件工程課程
LJMU & IIITB 計算機科學碩士 | 加州理工學院 CTME 網絡安全證書課程 |
全棧開發訓練營 | 區塊鏈PG項目 |
全棧開發中的執行 PG 計劃 | |
在下面查看我們所有的課程 | |
軟件工程課程 |
Java中Composition的詳細說明:
Composition 是 Java 關聯的一種形式。 這兩個通信類是緊密相連的,其中派生類完全依賴於父類。 在這種情況下派生類的獨立存在是不可能的。 例如,沒有汽車的發動機是不能獨立存在的。 與聚合相比,此關聯類型受到高度限制。 組合是一種設計技術,不應與 Java 特性相混淆。
Composition 可用於對具有其他對像作為其構成成員的對象建模。 這些對象之間存在has-a關係。 在這種關聯類型中,一個對象包含另一個對象。 因此,組成對象的生存完全依賴於主要對象。 因此,如果包含對像被破壞,組成對像也會受到影響。 因此,組合關係可以看作是整體關係的一部分,沒有整體就不可能存在部分。 換句話說,部分會隨著整體的刪除而自動刪除。 這意味著整體與部分有著牢固的關係。
從世界一流大學在線學習軟件開發課程。 獲得執行 PG 課程、高級證書課程或碩士課程,以快速推進您的職業生涯。
需求軟件開發技能
JavaScript 課程 | 核心 Java 課程 | 數據結構課程 |
Node.js 課程 | 課程 | 全棧開發課程 |
NFT課程 | 開發運營課程 | 大數據課程 |
React.js 課程 | 網絡安全課程 | 雲計算課程 |
數據庫設計課程 | Python 課程 | 加密貨幣課程 |
繼承與 Java 中的組合有何不同?
重要的是要注意繼承的功能也可以使用 Java 中的組合來實現。 儘管繼承和組合都用於為相關類提供代碼的可重用性,但兩者之間存在細微差別。 這兩個過程之間的主要區別在於,組合是一種設計技術,而繼承是一種 Java 特性。 下表列出了兩者之間的其他主要區別。
範圍 | 作品 | 遺產 |
基本的 | 它包含一個 HAS-A 關係。 | 它包含一個 IS-A 關係。 |
代碼重用 | 代碼可以在多個類中重用。 | 代碼的重用只能在一個類中進行,因為一個類只能擴展一個接口。 |
範圍 | 它可以在運行時輕鬆完成。 | 這些功能在編譯時可以更好地完成。 |
最終的 | 它促進了代碼的重用,甚至是來自最終類的代碼。 | 在繼承的情況下,不能重用最終類中的代碼。 |
方法 | 方法沒有公開。 公共接口用於它們的交互。 | 繼承公開基類的受保護和公共方法。 |
聚合和組合之間的差異:
聚合 | 作品 |
它是一種弱 Java 關聯。 | 與聚合相比,它是一種更強的關聯類型。 |
派生類獨立於基類。 因此,即使基類被銷毀,派生類也可以繼續存在。 | 派生類完全依賴於基類。 因此,如果超類被銷毀,子類將不存在。 |
子類有自己的生命週期。 | 子類的生命週期依賴於父類。 |
父類在這種關聯中使用子類。 因此,派生類不屬於基類。 | 在這種關聯類型中,父類擁有子類。 因此,父類是子類的所有者。 |
它構成了一個HAS-A關係。 派生類有一個基類。 | 它構成了部分關係。 派生類是基類的一部分。 |
final 關鍵字不用於表示聚合。 | final 關鍵字可用於表示組合。 |
示例:汽車有司機。 | 示例:發動機是汽車的一部分。 |
閱讀我們與軟件開發相關的熱門文章
如何在 Java 中實現數據抽象? | Java中的內部類是什麼? | Java 標識符:定義、語法和示例 |
通過示例了解 OOPS 中的封裝 | C 中的命令行參數解釋 | 2022 年雲計算的十大特點 |
Java 中的多態性:概念、類型、特徵和示例 | Java 中的包以及如何使用它們? | Git 初學者教程:從零開始學習 Git |
在 Java 中使用組合的優點:
- 組合有助於 Java 代碼的重用。
- 儘管 Java 不支持多重繼承,但這種設計技術可以填補這一空白。
- 通過組合的使用,可以更好地測試一個班級的能力。
- 使用組合使代碼更加靈活。 組合類實現可以替換為增強版本。
- 利用組合關係,可以在運行時更改對象成員,以實現程序行為的動態變化。
Java 中組合的局限性:
在 Java 中使用組合有一些缺點。 對象組合的主要缺點是用戶很難僅通過仔細研究源代碼來理解已實現系統的行為。 使用對象組合的系統本質上是高度動態的。 因此,了解使用對象組合的系統的功能需要對源代碼進行更深入的分析並運行代碼以見證源代碼中各個對象之間的功能和協作。
如果您有興趣了解有關 Java、全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的軟件開發執行 PG 課程——全棧開發專業化,該課程專為在職專業人士設計,並提供 500 多個小時的嚴格培訓、9 個以上的項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。