1)依賴
依賴關系是類與類之間的聯接。一個類依賴於另一個類的定義。如,一個人(Person)可以買車(Car)和房子(House),Person類依賴於Car和House的定義,因為Person引入了Car和House。與關聯不同的是,Person類中沒有Car和House的屬性,Car和House的實例是以參量的方式傳入到buy()方法中的。一般而言,依賴關系在Java語言中體現為局部變量,方法形參,或者對靜態方法的調用。
2)關聯
關聯是類與類之間的聯接,使一個類知道另一個類的屬性和方法。關聯可以是雙向,也可以是單向的。一般使用成員變量來實現。
3)聚合
聚合是一種強的關聯關系。是整體和個體之間的關系。例如,汽車類與引擎類,輪胎類之間的關系就是整體與個體之間的關系。與關聯關系一樣,聚合關系也是通過實例變量實現的。但是關聯關系涉及的兩個類在同一層次,而聚合關系中兩個類處在不平等的層次上,一個代表整體,一個代表部分。
4)組合
組合也是關聯關系的一種,一種比聚合關系強的關系。組合關系中的部分類不能獨立於整體類存在。整體類和部分類有相同的生命周期。如Person類和Leg類。
5)繼承/泛化
泛化和繼承其實是一個逆過程 泛化就是有子類抽象出一個父類 而繼承就是由父類具體化一個子類 例如足球比聯賽跟什么西甲 意甲 英超之間就是泛化/繼承的關系
6)組合和聚合的區別
組合和聚合都屬於關聯,所以它們之間難免有相似之處,區別舉例來說明:
程老師的《大話》里舉大那個大雁的例子很貼切 在此我就借用一下 大雁喜歡熱鬧害怕孤獨 所以它們一直過着群居的生活 這樣就有了雁群 每一只大雁都有自己的雁群 每個雁群都有好多大雁 大雁與雁群的這種關系就可以稱之為聚合 另外每只大雁都有兩只翅膀 大雁與雁翅的關系就叫做組合 有此可見 聚合的關系明顯沒有組合緊密 大雁不會因為它們的群主將雁群解散而無法生存 而雁翅就無法脫離大雁而單獨生存——組合關系的類具有相同的生命周期
聚合關系圖:
組合關系圖: