簡單談?wù)凧ava類與類之間的關(guān)系
類與類之間最常見的關(guān)系主要有三種:依賴(uses-a)、聚合(has-a)和繼承(is-a)。
下面以在線書店訂單系統(tǒng)為例,來詳細(xì)的講述這三種關(guān)系的概念。
在線書店訂單系統(tǒng)的主要功能是:注冊用戶可以登錄到網(wǎng)上書店選購圖書,在線填寫訂單,并支付購書款。書店確認(rèn)已經(jīng)收到購書款時,按用戶留下的地址郵寄圖書??梢栽谶@個系統(tǒng)中建立幾個類,有圖書(book)、賬戶(account)、訂單(order)、地址(address)等,如下圖所示:
依賴(uses-a)
依賴關(guān)系是類中最常見的關(guān)系,例如訂單類(order)需要訪問用戶賬戶類(account),所以在訂單類中需要引用賬戶類,即訂單類依賴賬戶類,但圖書類不需要依賴賬戶類。
如果修改賬戶類,會影響到訂單類。依賴的實質(zhì)就是類中的方法可以操作另一個類的實例。在實際程序設(shè)計中,建議盡量減少相互依賴類的數(shù)量。如下圖所示:
聚合(has-a)
因為訂單需要指明訂購什么圖書,這就涉及到圖書類,即包含了圖書類。聚合與依賴關(guān)系的不同在于,訂單類可以不擁有所有賬戶類對象,但是必須擁有所有圖書類對象,因為圖書類的對象是訂單的主要目的,如下圖所示:
繼承
繼承就是一個類能調(diào)用另一個類的所有數(shù)據(jù)成員,并在當(dāng)前類中不需要再重新定義,本章已經(jīng)講得很明白了。
相關(guān)文章
java8?Stream大數(shù)據(jù)量List分批處理切割方式
這篇文章主要介紹了java8?Stream大數(shù)據(jù)量List分批處理切割方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-02-02Mybatis的TypeHandler加解密數(shù)據(jù)實現(xiàn)
在我們數(shù)據(jù)庫中有些時候會保存一些用戶的敏感信息,所以就需要對這些數(shù)據(jù)進(jìn)行加密,那么本文就介紹了Mybatis的TypeHandler加解密數(shù)據(jù)實現(xiàn),感興趣的可以了解一下2021-06-06idea在運(yùn)行期間,實現(xiàn)讓修改的頁面實時生效
這篇文章主要介紹了idea在運(yùn)行期間,實現(xiàn)讓修改的頁面實時生效問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01Springmvc工程跳轉(zhuǎn)controller無效的解決
這篇文章主要介紹了Springmvc工程跳轉(zhuǎn)controller無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-09-09