什么是關(guān)系?
關(guān)系是指事物之間存在單向或雙向的作用或者影響的狀態(tài)。其中類與類之間要么有關(guān)系要么沒關(guān)系,感覺這句話有點說的很無恥,誰都知道,但是其中奧妙在于很難確定類與類之間是否有關(guān)系。證明兩個或者多個類是否存在關(guān)系涉及到業(yè)務(wù)、架構(gòu)、模塊邊界的問題,然而由于業(yè)務(wù)模型的抽象角度不同而不同,確定他們是否有關(guān)系是一件很不簡單的事情。
Java類有關(guān)系的6種情況
繼承:extends【is-a】
實現(xiàn):implements【can do】
組合:類是成員變量【contain-a】
聚合:類是成員變量【is-a】
依賴:是除了組合與聚合外的單向弱關(guān)系。比如使用一個類的屬性、方法,或以其作為方法的參數(shù)傳入,或以其作為方法的返回值輸出
【depends-a】
關(guān)聯(lián):相互是平等關(guān)系的依賴【links-a】
以上六種關(guān)系中繼承和實現(xiàn)是很容易辨別的關(guān)系。但是在設(shè)計過程中要注意組合、聚合、依賴和關(guān)聯(lián)這四個的區(qū)別。
繼承:
繼承關(guān)系包括子類和父類、子接口和父接口之間兩種繼承關(guān)系。用空心三角形和實線表示這種繼承關(guān)系。
實現(xiàn):
類和接口之間的關(guān)系,用空心三角形和虛線表示。
依賴:
A類會用到B類,這種關(guān)系具有偶然性,臨時性。但B類的變化會影響A類。這種在代碼中的體現(xiàn)為:A類方法中的參數(shù)包含了B類。 由虛線和箭頭表示
關(guān)聯(lián):
A類會用到B類,這是一種強(qiáng)依賴關(guān)系,是長期的并非偶然。在代碼中的表現(xiàn)為:A類的成員變量中含有B類。
由實線和箭頭表示。
聚合:
關(guān)聯(lián)關(guān)系的一種特例,是整體和部分的關(guān)系,即has-a的關(guān)系。整體和部分之間是可分離的,擁有各自的生命周期。 和組合關(guān)系的整體和部分關(guān)系不同的是:該整體包含很多個部分,但這里的部分都是相同的。比如鳥群和鳥的關(guān)系是聚合關(guān)系,鳥群中每個部分都是鳥。由空心菱形和實線箭頭表示。
組合關(guān)系:
也是關(guān)聯(lián)關(guān)系的一種特例,它體現(xiàn)一種contains-a的關(guān)系,這種關(guān)系比聚合更強(qiáng),也稱為強(qiáng)聚合。它同樣體現(xiàn)整體與部分的關(guān)系,但這種整體和部分是不可分割的,他們具有相同的生命周期。 和聚合關(guān)系相比:這種部分和整體的關(guān)系表現(xiàn)為,整體包含該部分,但也包含其他部分,其他部分和該部分并不相同。比如cpu和計算機(jī)是組合關(guān)系,計算機(jī)包含cpu,但又不僅僅是cpu還有屏幕鍵盤等。其他的部分不和cpu是同樣的。 由實心菱形和實線箭頭表示。
以上就是長沙一度軟件培訓(xùn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“怎么理解Java中類之間的6種關(guān)系”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。