锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Chapter 2 瀵硅薄鐨勭簿楂?/strong>
object錛堝璞★級(jí)
闈㈠悜瀵硅薄鐨勫熀鏈崟浣嶃傚璞℃槸涓涓嫢鏈夊睘鎬с佽涓哄拰鏍囪瘑絎︾殑瀹炰綋銆?br />瀵硅薄鏄被鐨勫疄渚嬶紝瀵硅薄鐨勫睘鎬у拰琛屼負(fù)鍦ㄧ被瀹氫箟涓畾涔夈?br />
class錛堢被錛?br />綾繪槸涓緇勫璞$殑鎻忚堪錛岃繖涓緇勫璞℃湁鍏卞悓鐨勫睘鎬у拰琛屼負(fù)銆傚湪姒傚康涓婏紝綾誨拰闈為潰鍚戝璞$▼搴忚璁¤璦涓殑鎶借薄鏁版嵁綾誨瀷姣旇緝鐩鎬技錛屼絾鏄敱浜庣被鍚屾椂鍖呮嫭鏁版嵁緇撴瀯鍜岃涓猴紝鎵浠ュ畠鏇翠負(fù)鍏ㄩ潰銆?br />綾葷殑瀹氫箟鎻忚堪浜?jiǎn)杩欎釜绫荤殑鎵鏈夊璞$殑灞炴э紝涔熸弿榪頒簡(jiǎn)瀹炵幇璇ョ被瀵硅薄鐨勮涓虹殑綾葷殑鏂規(guī)硶銆?br />
闈㈠悜瀵硅薄鎶鏈槸浣跨敤瀵硅薄灝嗙湡瀹炰笘鐣岀殑緋葷粺鍦ㄨ蔣浠朵腑寤烘ā鐨勬妧宸э紝瀵硅薄鏄牳蹇?jī)姒傚康锛屽畠鏄湡瀹炰笘鐣岀殑瀹炰綋鎴栨蹇电殑枋Y浠舵ā鍨嬨?br />綾繪槸瀵規(guī)墍鏈夎綾葷殑瀵硅薄鐨勭壒寰佺殑鎻忚堪鎴栧畾涔夛紱瀵硅薄鏄被鐨勪竴涓疄渚嬫垨鎴愬憳錛屽綋紼嬪簭榪愯鏃訛紝瀵硅薄琚垱寤哄茍瀛樺湪銆?br />緙栧啓鎴愬姛鐨凮O紼嬪簭錛屽繀欏誨潥鎸佷互瀵硅薄鐨勮鐐規(guī)濊冿紒錛侊紒
2.1 浠涔堟槸闈㈠悜瀵硅薄緋葷粺
object orientation錛堥潰鍚戝璞℃妧鏈級(jí)
涓縐嶈蔣浠跺紑鍙戞柟娉曪紝鍖呮嫭鍒╃敤瀵硅薄榪涜鎶借薄銆佸皝瑁呯殑綾匯侀氳繃娑堟伅榪涜閫氫俊銆佸璞$敓鍛藉懆鏈熴佺被灞傛緇撴瀯鍜屽鎬佺瓑鎶鏈?br />
2.1.1 闈㈠悜瀵硅薄緋葷粺鐨勫熀鏈壒鎬?/strong>
1. 鍒╃敤瀵硅薄榪涜鎶借薄
abstraction錛堟娊璞★級(jí) 鐪熷疄涓栫晫鐨勫璞℃垨姒傚康鐨勬ā鍨嬨?br />
2. 灝佽鐨勭被
Encapsulation錛堝皝瑁咃級(jí) 鍚戝鐣岄殣钘忓璞$殑鎵鏈夊唴閮ㄧ粏鑺傜殑榪囩▼銆傚湪Java涓紝閫氳繃鍦ㄧ被瀹氫箟閲岄潰鏉ュ畾涔夊睘鎬у拰鏂規(guī)硶鐨勬柟寮忥紝寮哄埗瀹炵幇灝佽榪囩▼銆?br />
attribute錛堝睘鎬э級(jí) 鐢ㄤ簬淇濇寔瀵硅薄鐨勭姸鎬佷俊鎭傚睘鎬у彲浠ュ緢綆鍗曪紝鍙槸涓涓竷?yōu)當(dāng)鍨嬪彉閲忚褰曞紑鎴栧叧錛涗篃鍙互鏄竴涓鏉傜殑緇撴瀯錛屾瘮濡傝鍙︿竴涓璞°傜被鐨勫畾涔夋弿榪頒簡(jiǎn)綾葷殑灞炴у拰鎿嶄綔錛堟柟娉曪級(jí)銆?br />behavior錛堣涓猴級(jí) 澶栫晫鍙鐨勫璞℃椿鍔ㄣ傚畠鍖呮嫭瀵硅薄濡備綍閫氳繃鏀瑰彉鍐呴儴鐘舵侊紝鎴栧悜鍏跺畠瀵硅薄榪斿洖鐘舵佷俊鎭潵鍝嶅簲娑堟伅銆?br />method錛堟柟娉曪級(jí) 閽堝瀵硅薄瀹炴柦鐨勬搷浣滄垨鏈嶅姟錛屼綔涓虹被瀹氫箟鐨勪竴閮ㄥ垎鏉ュ畾涔夈傛柟娉曠敤鏉ュ疄鐜板璞$殑琛屼負(fù)銆傛柟娉曠殑鍚屼箟璇嶅寘鎷垚鍛樺嚱鏁般佹搷浣滃拰鏈嶅姟絳夈?br />state錛堢姸鎬侊級(jí) 鐘舵佸弽鏄犱簡(jiǎn)緇欏畾瀵硅薄鎵鏈夊睘鎬х殑褰撳墠鍊鹼紝鏄粡榪囦竴孌墊椂闂寸殑瀵硅薄琛屼負(fù)縐瘡鐨勭粨鏋溿?br />
3. 閫氳繃娑堟伅榪涜閫氫俊
娑堟伅鏄寚瀵硅薄鏄浣曡繘琛岄氫俊鐨勩?br />鐢ㄧ▼搴忚璁℃湳璇潵璇達(dá)紝鍙戦佹秷鎭槸閫氳繃璋冪敤鏌愪釜綾葷殑鏂規(guī)硶鏉ュ疄鐜扮殑錛涙敹鍒版秷鎭槸閫氳繃鍏跺畠瀵硅薄璋冪敤鏈璞$殑綾葷殑鏂規(guī)硶鏉ュ疄鐜扮殑銆?br />娑堟伅椹卞姩鐨勭▼搴忔墽琛屾祦銆?br />
4. 瀵硅薄鐢熷懡鍛ㄦ湡
瀵硅薄鏄姩鎬佺殑瀹炰綋銆備竴涓璞★紙鍦ㄧ▼搴忚繍琛岃繃紼嬩腑錛夎鍒涘緩灝辯О涓哄畠琚疄渚嬪寲錛屾垨鍙楀埌綾誨畾涔夌殑綰︽潫銆傜粡榪囧疄渚嬪寲鐨勭被鐨勬垚鍛樼О涓哄璞★紝鎴栫瓑浠風(fēng)殑縐頒負(fù)瀹炰緥銆?br />
instantiation錛堝疄渚嬪寲錛?鍒涘緩涓涓粰瀹氱被鐨勫璞″疄渚嬨傚疄渚嬪寲涓涓疄渚嬩嬌瀹冧粠娌℃湁鍙樹(shù)負(fù)瀛樺湪銆?br />instance錛堝疄渚嬶級(jí) 鏌愪釜鐗瑰畾鐨勫璞℃槸涓涓被鐨勫疄渚嬨備竴涓疄渚嬫嫢鏈夌壒瀹氱殑灞炴с佽涓轟互鍙?qiáng)鍞竴鐨勬爣璇嗙銆傚疄渚嬪拰瀵硅薄榪欎袱涓瘝緇忓父浜掓崲浣跨敤銆?br />constructor錛堟瀯閫犳柟娉曪級(jí) 鍒涘緩瀵硅薄騫跺畾涔夊叾鍒濆鐘舵佺殑鎿嶄綔銆傚浜庡鏉傚璞℃潵璇達(dá)紝鏋勯犳柟娉曞彲鑳芥槸閲嶈鐨勬椿鍔紝涔熷彲鑳藉幓璋冪敤鍏跺畠瀵硅薄鐨勬瀯閫犳柟娉曘?br />object lifetime錛堝璞$敓瀛樻湡錛?瀵硅薄瀛樺湪鐨勬椂闂達(dá)紝浠庤皟鐢ㄦ瀯閫犳柟娉曞疄渚嬪寲寮濮嬶紝鐩村埌瀵硅薄涓嶅瀛樺湪錛岃Java鍨冨溇鏀墮泦鍣ㄧ粓緇撲負(fù)姝€傚璞′綍鏃惰鍒涘緩鏄敱紼嬪簭鎺у埗鐨勶紝浣嗘槸鐢變簬Java鍨冨溇鏀墮泦鍣ㄥ伐浣滅殑鏂瑰紡錛屽簲鐢ㄧ▼搴忔槸涓嶈兘紜畾瀵硅薄浣曟椂涓嶅瀛樺湪鐨勩?br />
identity錛堟爣璇嗙錛?瀵硅薄鍏鋒湁鐨勮兘灝嗗畠涓庡叾瀹冨璞″尯鍒嗗紑鏉ョ殑鐗瑰緛鎴栫姸鎬併?br />reference錛堝紩鐢級(jí) 鍏跺兼槸涓涓湴鍧鐨勬暟鎹厓绱犮傚湪Java涓紝鎵鏈夌殑瀵硅薄閮芥槸閫氳繃寮曠敤鏉ヨ闂殑銆備換浣曞璞″彉閲忛兘鏄涓涓湡瀹炲璞$殑寮曠敤錛岃岄潪瀵硅薄鏈韓銆?br />garbage collection錛堝瀮鍦炬敹闆嗭級(jí) 瀵逛笉鍐嶄嬌鐢ㄧ殑鍐呭瓨鐨勮嚜鍔ㄦ嫻嬪拰閲婃斁銆侸ava浣跨敤鍨冨溇鏀墮泦鍣紝鑰屼笉鏄儚C++閭f牱浣跨敤鏄懼紡鐨勬瀽鏋勬柟娉曘?br />
5. 綾誨眰嬈$粨鏋?br />鍒涘緩闈㈠悜瀵硅薄紼嬪簭鏈閲嶈鐨勬柟闈箣涓鏄皢綾誨畨鎺掑埌澶氫釜灞傛緇撴瀯涓幓銆?br />
association錛堝叧鑱旓級(jí) 涓や釜綾諱箣闂寸殑涓縐嶅叧緋匯傚叧鑱旇〃鏄庣被鐨勫璞′箣闂寸殑鐩鎬簰鍏崇郴銆?br />hierarchy錛堝眰嬈$粨鏋勶級(jí) 綾葷殑涓縐嶆搴忋傛渶甯歌鐨勯潰鍚戝璞″眰嬈$粨鏋勬槸緇ф壙鍏崇郴鍜岃仛鍚堝叧緋匯?br />multiplicity錛堝閲嶆э級(jí) 紜畾瀵硅薄闂村叧鑱旀暟閲忕殑灞炴с?br />
絎竴縐嶏細(xì)鏁翠綋/閮ㄥ垎灞傛緇撴瀯
whole/part錛堟暣浣?閮ㄥ垎錛?綾諱箣闂寸殑涓縐嶅叧緋伙紝涓涓被鐢卞叾瀹冪被鐨勫璞$粍鎴愭垨瀹圭撼浜?jiǎn)鍏跺畠绫荤殑瀵硅薄銆?br />has-a錛堟嫢鏈夛級(jí) 涓縐嶈鏄庢暣浣?閮ㄥ垎鍏崇郴鐨勬柟寮忋傛暣涓璞℃嫢鏈夐儴鍒嗐?br />part-of錛堥儴鍒嗭級(jí) 涓巋as-a鐩稿弽銆傜粍浠舵槸鏁翠綋鐨勪竴閮ㄥ垎銆?br />
鑱氬悎鍏崇郴涓紝閮ㄥ垎涓鏂圭殑瀵硅薄鍙互鏉ュ幓鑷敱錛涚粍鍚堝叧緋諱腑錛屽璞℃槸鏁翠綋鐨勪笉鍙己灝戠殑閮ㄥ垎銆?br />aggregation錛堣仛鍚堬級(jí) 涓縐嶆暣鍚?閮ㄥ垎灞傛鍏崇郴銆備竴涓仛鍚堝璞″寘鎷紙鎷ユ湁錛夊叾瀹冨璞★紝姣忎釜琚寘鎷殑瀵硅薄琚涓烘槸鑱氬悎瀵硅薄鐨勪竴閮ㄥ垎銆?br />composition錛堢粍鍚堬級(jí) 緇勫悎鏄仛鍚堢殑涓縐嶅艦寮忥紝鍦ㄨ繖縐嶆儏鍐典笅錛屾病鏈夊叾瀹冪粍鎴愰儴鍒嗭紝鏁翠綋灝變笉鑳藉瓨鍦ㄣ?br />
絎簩縐嶏細(xì)娉涘寲/鐗規(guī)畩鍖?br />瀹炵幇娉? 鐗瑰眰嬈$粨鏋勭殑涓昏鏈哄埗縐頒負(fù)緇ф壙銆?br />generalization/specialization錛堟硾鍖?鐗規(guī)畩鍖栵級(jí) 涓縐嶇戶鎵垮眰嬈″叧緋匯傚浜庢洿娉涘寲鐨勮秴綾繪潵璇達(dá)紝姣忎釜瀛愮被閮芥槸瀹冪殑鐗規(guī)畩鍖栫殑綾匯?br />is-a錛堟槸錛?緇ф壙灞傛緇撴瀯涓嬌鐢ㄧ殑涓涓湳璇傛葷殑鏉ヨ錛屽瓙綾繪槸錛坕s a錛夋洿閫氱敤鐨勮秴綾葷殑涓縐嶇壒孌婂寲鎯呭喌銆?br />
overriding錛堥噸杞斤級(jí) 褰撳瓙綾諱負(fù)鍏惰秴綾葷殑灞炴у拰鏂規(guī)硶鎸囧畾浜?jiǎn)鏂扮殑瀹氫箟鏃跺Q屽畠?yōu)閲嶈浇浜?jiǎn)瓚呯被涓殑瀹氫箟銆傞噸杞芥湁鏃朵篃琚О涓簅verloading銆傚湪Java涓彧鑳介噸杞芥柟娉曘?br />default behaviors錛堢己鐪佽涓猴級(jí) 鍦ㄤ竴涓戶鎵垮眰嬈$粨鏋勪腑錛岃秴綾繪墍瀹氫箟鐨勮涓哄皢緙虹渷鐨勮瀛愮被鎵浣跨敤錛岄櫎闈炲瓙綾誨榪欎釜琛屼負(fù)榪涜浜?jiǎn)閲嶈浇銆?br />
inheritance錛宻ingle錛堝崟緇ф壙錛?褰撲竴涓瓙綾諱粠鍗曚竴瓚呯被媧劇敓鑰屾潵鏃訛紝縐頒負(fù)鍗曠戶鎵褲?br />inheritance錛宮ultiple錛堝緇ф壙錛?褰撲竴涓瓙綾諱粠澶氫釜瓚呯被媧劇敓鑰屾潵鏃訛紝縐頒負(fù)澶氶噸緇ф壙銆侸ava涓嶆敮鎸佸閲嶇戶鎵匡紝浣滀負(fù)鏇夸唬鏂瑰紡錛屽畠鎻愪緵浜?jiǎn)鎺ュ彛銆?br />interface錛堟帴鍙o級(jí) 鍦↗ava涓紝鎺ュ彛瑙勫畾浜?jiǎn)涓浜涙柟娉曪紝浣跨敤榪欎釜鎺ュ彛鐨勭被蹇呴』瀹炵幇榪欎簺鏂規(guī)硶銆傛帴鍙e彧鏄竴涓鑼冿紝涓嶅畾涔変換浣曞疄闄呬唬鐮併?br />implements錛堝疄鐜幫級(jí) 鍦↗ava涓紝綾誨疄鐜版帴鍙f墍瑕佹眰鐨勪唬鐮佺殑涓涓槑紜寲鐨勮繃紼嬨?br />
is-a test錛堟槸嫻嬭瘯錛?涓縐嶇畝鍗曠殑嫻嬭瘯錛屼互紜畾緇ф壙鍏崇郴璁捐鏄紜殑銆傚鏋滀綘涓嶈兘璇村瓙綾繪槸錛坕s a錛夎秴綾葷殑涓縐嶏紝閭d箞榪欑緇ф壙鍏崇郴鍙兘鏄笉姝g‘鐨勩?br />
6. 澶氭佹?br />澶氭佹槸緇ф壙鍏崇郴鐨勭壒鐐癸紝瀹冪‘淇濊繖縐嶅瓙綾葷殑瀹炰緥鎵ц姝g‘鐨勮涓恒?br />Polymorphism錛堝鎬侊級(jí) 澶氭佷嬌寰楀浠諱綍瀵硅薄鑷姩璋冪敤鍏舵伆褰撶殑鏂規(guī)硶鎴愪負(fù)鍙兘銆?br />
鍏佽澶氭佺幇璞″彂鐢熺殑鏈哄埗縐頒負(fù)鍔ㄦ佺粦瀹氥傚涓涓寚瀹氱殑鏂規(guī)硶璋冪敤鐨勭粦瀹氳鎺ㄨ繜鍒拌繍琛屾椂鍒誨畬鎴愩?br />dynamic binding錛堝姩鎬佺粦瀹氾級(jí) 鍦ㄨ繍琛屾椂鍒葷粦瀹氬畾涔夈?br />
]]>