Thinking In Java 閱讀筆記(一)

引言

“He gave man speech, and speech created thought, Which is the measure of the Universe”
—Prometheus Unbound, Shelley

和其它自然語(yǔ)言一樣苛萎,Java是表達(dá)思想的媒介易阳。隨著問(wèn)題規(guī)模的越發(fā)增大、程度的越發(fā)復(fù)雜,憑借自身無(wú)與倫比的靈活性鸿染,Java得以更加輕松地解決實(shí)際問(wèn)題。
記住瞒窒,千萬(wàn)不要將Java僅僅視為各種特性的集合躲惰,這會(huì)使你失去對(duì)它的深入理解。設(shè)計(jì)思維是Java使用者十分重要的思考方式智袭,也是Java的設(shè)計(jì)初衷:讓使用者可以在Java上輕松地設(shè)計(jì)軟件結(jié)構(gòu)奔缠,而非只是用來(lái)進(jìn)行簡(jiǎn)單的編程。毫無(wú)疑問(wèn)吼野,這不僅需要對(duì)語(yǔ)言的熟練運(yùn)用校哎,更需要對(duì)問(wèn)題的透徹理解。

抽象

抽象是編寫(xiě)程序的基礎(chǔ),而問(wèn)題的復(fù)雜程度取決于抽象的質(zhì)量闷哆,良好的抽象結(jié)果有益于問(wèn)題的解決腰奋。在這一點(diǎn)上,早期的組裝式語(yǔ)言和命令式語(yǔ)言(FORTRAN, BASIC, C)做得不夠優(yōu)秀抱怔,因?yàn)槲覀儾坏貌辉诮鉀Q問(wèn)題的過(guò)程中考慮機(jī)器模型與問(wèn)題模型的聯(lián)系劣坊,因?yàn)樵诓煌臋C(jī)器上需要不同的編碼實(shí)現(xiàn),這無(wú)疑增加了編程以及維護(hù)的難度屈留。
當(dāng)然局冰,替代方案總是有的,LISP和ASL使用模型化問(wèn)題替代模型化機(jī)器灌危,將問(wèn)題轉(zhuǎn)化為決策鏈康二。它們提供了另一種觀察問(wèn)題的視角(“所有問(wèn)題都是列表”或“所有問(wèn)題都是算法”),在解決特定類(lèi)型的問(wèn)題上的確效率頗高乍狐,但是一旦踏出那一畝三分地便會(huì)捉襟見(jiàn)肘赠摇。
面向?qū)ο缶幊蹋∣bject-Oriented Programming, OOP)是編程領(lǐng)域的重大改進(jìn),它摒棄了與問(wèn)題毫無(wú)聯(lián)系的機(jī)器部分浅蚪,取而代之的是問(wèn)題的抽象:對(duì)象(Object)。有了對(duì)象烫罩,我們得以從問(wèn)題的角度解決問(wèn)題惜傲,而不是從機(jī)器的角度解決問(wèn)題。同樣贝攒,程序也不再拘泥于只能解決特定領(lǐng)域的問(wèn)題盗誊,而是可以解決更加通用的問(wèn)題。但是這不代表OOP與計(jì)算機(jī)毫無(wú)關(guān)聯(lián)隘弊。我們可以將每個(gè)對(duì)象都視為一臺(tái)計(jì)算機(jī)哈踱,它們有狀態(tài)、動(dòng)作梨熙,你可以發(fā)送指令操作它們开镣。
面向?qū)ο缶幊叹哂形鍌€(gè)特征:
1.萬(wàn)物皆對(duì)象
2.程序本質(zhì)上是許多對(duì)象互相通信的過(guò)程
3.任何對(duì)象都是其它對(duì)象的組合
4.任何對(duì)象都有類(lèi)型
5.同一類(lèi)型的對(duì)象接收同樣的信息
簡(jiǎn)單地說(shuō),對(duì)象擁有狀態(tài)咽扇、行為邪财、身份。狀態(tài)來(lái)自于內(nèi)部的數(shù)據(jù)质欲,行為由方法產(chǎn)生树埠,身份(多數(shù)情況下可以認(rèn)為是內(nèi)存地址)用來(lái)將每個(gè)對(duì)象區(qū)分開(kāi)。

接口

我們所說(shuō)的“類(lèi)”最早來(lái)源于亞里士多德對(duì)物種種類(lèi)(type)的研究嘶伟,在其中他首次使用“魚(yú)類(lèi)”和“鳥(niǎo)類(lèi)”的稱呼怎憋。類(lèi)中包含具有相同特征與行為的對(duì)象,對(duì)象可以屬于不同的類(lèi)。編程語(yǔ)言中的關(guān)鍵字class便代表了類(lèi)(盡管實(shí)際上我們創(chuàng)建的是新的數(shù)據(jù)種類(lèi)(type)绊袋,但所有OOP語(yǔ)言都使用class而不是type作為關(guān)鍵字)毕匀。在程序運(yùn)行期間,除了各自的狀態(tài)愤炸,類(lèi)中成員彼此完全相同期揪。可以說(shuō)规个,將實(shí)體抽象成類(lèi)是面向?qū)ο缶幊套罨镜牟襟E凤薛。
類(lèi)被創(chuàng)建后,我們便可以創(chuàng)建并操作對(duì)象诞仓,但是問(wèn)題也隨之而來(lái):如何在問(wèn)題和對(duì)象之間建立一對(duì)一的聯(lián)系缤苫?怎樣讓對(duì)象做出恰當(dāng)?shù)男袨椋匡@然墅拭,對(duì)象只會(huì)對(duì)特定的請(qǐng)求做出回應(yīng)活玲,我們稱這樣的請(qǐng)求為接口(interface),而決定接口的則是種類(lèi)(type)谍婉。接口里面需要有具體代碼舒憾,這些代碼加上對(duì)象中的隱藏?cái)?shù)據(jù)統(tǒng)稱為實(shí)現(xiàn)(implementation)。下面用電燈泡作為一個(gè)例子:
如圖所示穗熬,類(lèi)名是Light镀迂,對(duì)象是lt,其中包含的方法可以讓它打開(kāi)唤蔗、關(guān)閉探遵、變亮、變暗妓柜。通過(guò)使用關(guān)鍵字new箱季,我們得以創(chuàng)建對(duì)象,注意這里創(chuàng)建的是指向?qū)ο蟮囊霉髌玫拿质?strong>lt藏雏。對(duì)象的方法通過(guò)在對(duì)象名后添加逗點(diǎn)(.)來(lái)操作,這與面向過(guò)程編程的語(yǔ)法類(lèi)似塌衰。
上圖中間包含類(lèi)名和方法名的方塊稱為統(tǒng)一建模語(yǔ)言(Unified Modeling Language, UML)诉稍。在最上面方塊內(nèi)的是類(lèi)名,中間方塊內(nèi)的是數(shù)據(jù)成員名最疆,最下面方塊內(nèi)的是方法名杯巨。通常情況下,只有類(lèi)名和public方法表示在UML中努酸。當(dāng)然如果僅僅需要類(lèi)名服爷,方法名部分也可以省略。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市仍源,隨后出現(xiàn)的幾起案子心褐,更是在濱河造成了極大的恐慌,老刑警劉巖笼踩,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逗爹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嚎于,警方通過(guò)查閱死者的電腦和手機(jī)掘而,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)于购,“玉大人袍睡,你說(shuō)我怎么就攤上這事±呱” “怎么了斑胜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)嫌吠。 經(jīng)常有香客問(wèn)我止潘,道長(zhǎng),這世上最難降的妖魔是什么辫诅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任覆山,我火速辦了婚禮,結(jié)果婚禮上泥栖,老公的妹妹穿的比我還像新娘。我一直安慰自己勋篓,他們只是感情好吧享,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著譬嚣,像睡著了一般钢颂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拜银,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天殊鞭,我揣著相機(jī)與錄音,去河邊找鬼尼桶。 笑死操灿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泵督。 我是一名探鬼主播趾盐,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了救鲤?” 一聲冷哼從身側(cè)響起久窟,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎本缠,沒(méi)想到半個(gè)月后斥扛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丹锹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年稀颁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卷仑。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡峻村,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出锡凝,到底是詐尸還是另有隱情粘昨,我是刑警寧澤,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布窜锯,位于F島的核電站张肾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锚扎。R本人自食惡果不足惜吞瞪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望驾孔。 院中可真熱鬧芍秆,春花似錦、人聲如沸翠勉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)对碌。三九已至荆虱,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朽们,已是汗流浹背怀读。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骑脱,地道東北人菜枷。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惜姐,于是被迫代替她去往敵國(guó)和親犁跪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子椿息,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法坷衍,內(nèi)部類(lèi)的語(yǔ)法寝优,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法枫耳,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,598評(píng)論 18 399
  • (一)Java部分 1乏矾、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,083評(píng)論 0 62
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,796評(píng)論 25 707
  • ——讀《推拿》 我看過(guò)很多書(shū),書(shū)中各種各樣的世界都會(huì)使我形成一個(gè)靈魂迁杨,一種生...
    粥粥粥大碗閱讀 448評(píng)論 0 0
  • 存在的問(wèn)題铅协,就是你的機(jī)會(huì)捷沸。(公司是請(qǐng)你來(lái)解決問(wèn)題的,不是來(lái)制造問(wèn)題的)狐史。 公司在快速發(fā)展痒给,需要大量人員,從執(zhí)行到管...
    知讀先生閱讀 433評(píng)論 0 0