歡迎來(lái)到趣招生!
咨詢熱線 400-168-8684
2018-04-12 20:30:40|已瀏覽:1584103次
Java中類(lèi)與類(lèi)之間的關(guān)系存在以下關(guān)系:
1、 泛化(Generalization)
很簡(jiǎn)單,就是我們常說(shuō)的繼承。是說(shuō)子類(lèi)獲得父類(lèi)的功能的同時(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)上沒(méi)有區(qū)別。
聚合:指的是整體與部分的關(guān)系
組合:表示類(lèi)之間整體和部分的關(guān)系,但是組合關(guān)系中部分和整體具有統(tǒng)一的生存期,即整體對(duì)象不存在,部分對(duì)象也將不存在
Java代碼中,表現(xiàn)為成員變量。
4、 總結(jié)
在Java中,應(yīng)該盡量?jī)?yōu)先使用組合,而不是繼承,因?yàn)槔^承會(huì)使得類(lèi)關(guān)系過(guò)于復(fù)雜化,破壞了封裝性,使用組合一樣可以獲得已有類(lèi)的功能,而且會(huì)使新類(lèi)更加穩(wěn)固。
實(shí)際上,從依賴 -----〉聚合--------〉組合,類(lèi)與類(lèi)之間的關(guān)系更加緊密,互相之間的影響越來(lái)越大,其實(shí)我們平常比較少去區(qū)分這些關(guān)系,而且事實(shí)上這東西的定義不太好理解,所以肯定會(huì)導(dǎo)致認(rèn)識(shí)上的偏差,所以我們使用這些東西的時(shí)候,盡量靠近大家都認(rèn)同的做法,這樣容易讓別人理解。
聯(lián)系電話:<>400-168-8684