組合和聚合的關係很像,但是又有著本質區別。
他們兩個的區別其實通過**不是能很明顯的看出來,但是你在寫**的
初衷動機不一樣。比如你想用a類接收別人傳給你的訊息,同時a包含b,那麼他們的目的就是接收訊息僅此而已,b不會再有其他的作用,它完全屬於a;
但是這兩個類在你建立的時候他們本身沒有關係或者有著千絲萬縷的關係,但是初衷就不是b屬於a,而是他們為了實現乙個功能而相互需要,相愛相殺。
比如你寫乙個類a,乙個類b。a裡邊包含乙個屬性b b;如下:
/**
* 組合
*/public class a
public void setb(b b)
public void aaa()
}
組合的關係是a擁有b的全部生命週期,b就是a的一部分,切b的物件只能被a的乙個物件擁有而不能共享。new a()的時候,b的物件隨之產生,當a的乙個物件消亡,隨之使用的b物件也會跟著消亡。
仍然是乙個類a,引入了物件b,並且使用了物件b的方法。
/**
* 聚合a類
*/public class a
public void aaa()
}
/**
* 聚合b類
*/public class b
}
聚合的關係是,a擁有b,但不擁有全部,也不是必須擁有,a與b之間是可以分離的,是兩個單獨的個體,各自擁有各自的生命週期。b不屬於a,a把b拿過來只是借用了b一下,或者b需要使用a中的一部分實現而把自己嵌進去了,這個活幹完了,大家各回各家,各找各媽。 類之間的關係 關聯 組合 聚合 依賴關係比較
1 種類 generalization 泛化 dependency 依賴關係 association 關聯關係 aggregation 聚合關係 composition 合成關係 2 其中aggregation 聚合關係 composition 合成關係 屬於 association 關聯關係 是特...
類的關聯 組合 聚合關係
關聯 類的例項持有著對其他物件的引用,沒有整體與部分的意義。組合 整體與部分的關係,且類的例項與其內部的物件在生命期上保持一致,同時建立和銷毀。另外,組合不允許有組合迴路,否則編譯不報錯,但是執行時將會出現stackoverflowexception 的異常導致程式終止。聚合 整體與部分的關係,且類...
Java類之間的關係
常見的有 依賴 聚合 繼承 依賴,即 uses a 最明顯的 最常見的關係。例如 order類使用account類是因為order物件需要訪問account物件檢視信用狀態。但是,item類不依賴於account類。這是因為item物件與賬戶無關。因此,如果乙個類的方法操縱另乙個類的物件,就說乙個類...