回覆列表
  • 1 # Mr丶杜先生丶

    組合和聚合是有很大區別的,這個區別不是在形式上,而是在本質上:

    比如A類中包含B類的一個引用b,當A類的一個物件消亡時,b這個引用所指向的物件也同時消亡(沒有任何一個引用指向它,成了垃圾物件),這種情況叫做組合,反之b所指向的物件還會有另外的引用指向它,這種情況叫聚合。

    在實際寫程式碼時組合方式一般會這樣寫:

    A類的構造方法裡建立B類的物件,也就是說,當A類的一個物件產生時,B類的物件隨之產生,當A類的這個物件消亡時,它所包含的B類的物件也隨之消亡。

    聚合方式則是這樣:

    A類的物件在建立時不會立即建立B類的物件,而是等待一個外界的物件傳給它

    傳給它的這個物件不是A類建立的。

    現實生活中:

    人和人和手,腳是組合關係,因為當人死亡後人的手也就不復存在了。人和他的電腦是聚合關係。 class Hand{ } class Computer{ } 組合: class Person{ private Hand hand; public Person(){ hand = new Hand(); } } 聚合: class Person{ private Computer computer; public setComputer(){ computer = new Computer(); } }

  • 中秋節和大豐收的關聯?
  • SAP是否有應收款到期提醒功能?