Java中類與類之間的關(guān)系
1、泛化(Generalization)
很簡(jiǎn)單,就是我們常說的繼承。是說子類獲得父類的功能的同時(shí),還可以擴(kuò)展自己的功能。
如圖:
Java代碼中表現(xiàn)為:extends和implements
2、依賴(Dependency)
兩個(gè)相對(duì)獨(dú)立的咚咚(A和B),當(dāng)A負(fù)責(zé)構(gòu)造B時(shí),A與B形成依賴關(guān)系,即A使用B。
如圖:
Java代碼中的表現(xiàn)為局部變量,方法的參數(shù),以及對(duì)靜態(tài)方法的調(diào)用
3、關(guān)聯(lián)(Association)
兩個(gè)相對(duì)獨(dú)立的咚咚(A和B),當(dāng)A對(duì)象持有B對(duì)象的時(shí)候,形成關(guān)聯(lián)關(guān)系。
關(guān)于分為有兩種特殊的形式,聚合(Aggregation)和組合(Composition),聚合和組合只有概念上的區(qū)別,在Java中的代碼實(shí)現(xiàn)上沒有區(qū)別。
聚合:指的是整體與部分的關(guān)系,如圖:
組合:表示類之間整體和部分的關(guān)系,但是組合關(guān)系中部分和整體具有統(tǒng)一的生存期,即整體對(duì)象不存在,部分對(duì)象也將不存在,如圖:
Java代碼中,表現(xiàn)為成員變量。
4、總結(jié)
在Java中,應(yīng)該盡量?jī)?yōu)先使用組合,而不是繼承,因?yàn)槔^承會(huì)使得類關(guān)系過于復(fù)雜化,破壞了封裝性,使用組合一樣可以獲得已有類的功能,而且會(huì)使新類更加穩(wěn)固。
實(shí)際上,從依賴 -----〉聚合--------〉組合,類與類之間的關(guān)系更加緊密,互相之間的影響越來越大,其實(shí)我們平常比較少去區(qū)分這些關(guān)系,而且事實(shí)上這東西的定 義不太好理解,所以肯定會(huì)導(dǎo)致認(rèn)識(shí)上的偏差,所以我們使用這些東西的時(shí)候,盡量靠近大家都認(rèn)同的做法,這樣容易讓別人理解。
posted on 2012-04-25 13:52 順其自然EVO 閱讀(165) 評(píng)論(0) 編輯 收藏