Think in Java 第一章(對(duì)象導(dǎo)論)

信仰

1.1 抽象過(guò)程

1>萬(wàn)物皆對(duì)象
在這個(gè)世界上可知的事物可以用語(yǔ)言 來(lái)描述它 示血,編程也是一樣我們可以用編程語(yǔ)言描述一切事物(外觀 行為 特征)讥蟆,只要你想得到马胧。

2>程序是對(duì)象的集合僵朗,它們通過(guò)發(fā)送消息來(lái)告知彼此所要做的 (方法調(diào)用)

3>每個(gè)對(duì)象都有自己的由其他對(duì)象所構(gòu)成的存儲(chǔ)(對(duì)象可以由其他對(duì)象組成)

4>每個(gè)對(duì)象都擁有類型(每個(gè)對(duì)象都有其獨(dú)特性 根據(jù)功能可以發(fā)送什么樣的消息給它)

5>某一特定類型的所有對(duì)象都可以接收同樣的消息

1.2 每個(gè)對(duì)象都有一個(gè)接口

接口確定了對(duì)某一特定對(duì)象所能發(fā)起的請(qǐng)求 席纽,向某個(gè)實(shí)現(xiàn)特定接口的對(duì)象發(fā)送消息捏悬,這個(gè)對(duì)象便知道此消息的目的,然后執(zhí)行對(duì)應(yīng)的程序代碼

1.3 每個(gè)對(duì)象都提供服務(wù)

開(kāi)發(fā)理解程序時(shí)润梯,將對(duì)象理解為“服務(wù)提供者”邮破,它(程序)通過(guò)調(diào)用一系列對(duì)象提供的服務(wù)解決問(wèn)題,我們做的就是去創(chuàng)建或是去尋找能夠提供理想服務(wù)解決問(wèn)題的一系列對(duì)象集合仆救,在這個(gè)過(guò)程中每個(gè)對(duì)象提供特定服務(wù)(而不是把多個(gè)功能讓一個(gè)對(duì)象實(shí)現(xiàn))

1.4 被隱藏的具體實(shí)現(xiàn)

訪問(wèn)控制:
1>讓客戶端程序員無(wú)法觸及不應(yīng)該觸及的部分
2>允許庫(kù)設(shè)計(jì)者可以改變類內(nèi)部的工作方式不用擔(dān)心會(huì)影響到客戶端程序員

private(私有 該類對(duì)象訪問(wèn))
default (包訪問(wèn)權(quán)限 同包訪問(wèn))
protected(保護(hù)訪問(wèn)權(quán)限 本身及子類訪問(wèn))
public (all)

1.5 復(fù)用的具體實(shí)現(xiàn)

通過(guò)組合實(shí)現(xiàn)復(fù)用(使用現(xiàn)有類合成新類)。
建立新類時(shí)矫渔,首先考慮組合彤蔽,因?yàn)樗?jiǎn)單靈活。

1.6 繼承

對(duì)象這種概念庙洼,將數(shù)據(jù)和功能封裝到一起顿痪,用關(guān)鍵字class表示,形成了編程語(yǔ)言中的基本單位油够,但是這樣做有許多麻煩蚁袭,創(chuàng)建一個(gè)類,即使另一個(gè)新類與其具有相似的功能石咬,你還得從新建一個(gè)類揩悄,為了解決這個(gè)問(wèn)題 繼承產(chǎn)生了。
繼承現(xiàn)有類時(shí)創(chuàng)造了新的類型鬼悠,這個(gè)類型包括繼承類的所有成員(盡管private成員被隱藏起來(lái)不可訪問(wèn))更重要的是他復(fù)制了基類的接口,這時(shí)可以對(duì)功能方法的覆蓋或者添加删性。

1.7 伴隨多態(tài)的可互換對(duì)象

處理類型的層次結(jié)構(gòu)時(shí),經(jīng)常想把一個(gè)對(duì)象不當(dāng)做他所屬的特定類型來(lái)對(duì)待焕窝,而是將其當(dāng)做基類(Object)來(lái)對(duì)待蹬挺。這使得人們編寫出不依賴于特定類型的代碼。

1.8 單根繼承結(jié)構(gòu)

在單根繼承結(jié)構(gòu)中的所有對(duì)象都具有一個(gè)公用接口它掂,所以它們歸根結(jié)底是相同的基本類型巴帮,單根繼承結(jié)構(gòu)保證所有對(duì)象具備某些功能,比如垃圾回收機(jī)制

1.9 容器(這一節(jié)把書本內(nèi)容打了一遍)

在解決某個(gè)特定問(wèn)題時(shí)需要多少對(duì)象,或者它們存活多久那么就不可能知道如何存儲(chǔ)這些對(duì)象榕茧,如何才知道需要多少空間創(chuàng)建這些對(duì)象垃沦,答案是你不可能知道,因?yàn)檫@類信息只有運(yùn)動(dòng)是才獲取雪猪。對(duì)于面向?qū)ο笤O(shè)計(jì)中的大多數(shù)問(wèn)題而言栏尚,這個(gè)問(wèn)題的解決方案似乎過(guò)于輕率,創(chuàng)建另一種對(duì)象類型這種新的對(duì)象類型持有對(duì)其他對(duì)象的引用只恨。當(dāng)然译仗,你可以用在大多數(shù)語(yǔ)言中都有的數(shù)組功能的數(shù)組類型來(lái)實(shí)現(xiàn)相同的功能,但這個(gè)通常被稱作為容器(也成為集合官觅,不過(guò)Java類庫(kù)以不同的含義使用集合這個(gè)術(shù)語(yǔ)纵菌,所以本書將使用容器這個(gè)詞),在任何你需要是都可以容納你置于容器中的所有的東西休涤。因此不需要將來(lái)要把多個(gè)對(duì)象置于容器中咱圆,只需要?jiǎng)?chuàng)建一個(gè)容器對(duì)象,然后讓他處理所有細(xì)節(jié)功氨。
幸運(yùn)的是序苏,好的OOP語(yǔ)言都有一組容器,它們作為開(kāi)發(fā)包的一部分捷凄。在c++中忱详,容器是標(biāo)準(zhǔn)c++類庫(kù)的一部分,經(jīng)常被稱為標(biāo)準(zhǔn)模板庫(kù)跺涤,Java在其標(biāo)準(zhǔn)庫(kù)中也包含大量的容器匈睁,在某些類庫(kù)中一兩個(gè)通用容器足夠滿足所有的需求,但是在其他類庫(kù)中桶错,具有滿足需要的各種類型的容器航唆,例如List,Map,Set,以及諸如隊(duì)列院刁、樹糯钙、堆棧等更多的構(gòu)件。
從設(shè)計(jì)的觀點(diǎn)來(lái)看黎比,真正需要的只是一個(gè)被操作超营,從而解決問(wèn)題的序列。如果單一類型的容器可以滿足所有需求阅虫,那么就沒(méi)有理由設(shè)計(jì)不同類型的序列了演闭。然而還是需要對(duì)容器有所選擇,這有兩個(gè)原因颓帝,第一米碰,不同容器提供了不同接口和外部行為窝革。堆棧相比于隊(duì)列就有不同的接口和外部行為,也不同于集合和列表的行為吕座,它們中的某種容器提供的解決方案可能比其他容器更靈活虐译。第二,不同容器對(duì)于某些操作具有不同的效果吴趴,最好的例子就是兩種List的比較:ArrayList和LinkedList.它們都是具有相同接口和外部行為的簡(jiǎn)單徐磊漆诽,但是它們對(duì)某些操作所花費(fèi)的代價(jià)卻有著天壤之別。在ArrayList中隨機(jī)訪問(wèn)元素是一個(gè)花費(fèi)固定時(shí)間的操作锣枝;但是對(duì)于LinkedList來(lái)說(shuō)隨機(jī)選取元素需要在列表中移動(dòng)厢拭,這種代價(jià)是高昂的,訪問(wèn)表尾的元素撇叁,花費(fèi)的時(shí)間越長(zhǎng)供鸠,而另一方面,如果想在序列中插入一個(gè)元素陨闹,linkedLIst的開(kāi)銷要比ArrayList小楞捂。上述操作以及其他操作效率,序列底層結(jié)構(gòu)的不同而存在巨大差異趋厉,我們可以一開(kāi)始使用LinkList構(gòu)建程序寨闹,而在優(yōu)化系統(tǒng)性能時(shí)改用ArrayList。接口List所帶來(lái)的抽象君账,把在容器之間進(jìn)行轉(zhuǎn)換時(shí)對(duì)代碼產(chǎn)生的影響降到最小限度

1.9.1 參數(shù)化類型

Java SE5之前容器中存對(duì)象鼻忠,需要向上轉(zhuǎn)型為Object,當(dāng)使用時(shí)我們需要向下轉(zhuǎn)型 (有兩個(gè)方面問(wèn)題)
1>可能在運(yùn)行時(shí)轉(zhuǎn)型錯(cuò)誤
2>向下轉(zhuǎn)型和運(yùn)行時(shí)的檢查需要額外的運(yùn)行時(shí)時(shí)間
為了解決這兩個(gè)問(wèn)題 ,更安全更更快捷的Java SE5引入泛型

1.10 對(duì)象的創(chuàng)建和生命周期

在使用對(duì)象時(shí)杈绸,最關(guān)鍵的問(wèn)題
便是他們的生成銷毀方式,每個(gè)對(duì)象為了生存需要資源矮瘟,尤其是內(nèi)存瞳脓,當(dāng)我們不在需要一個(gè)對(duì)象時(shí),它必須被清理掉澈侠,使其使用的資源得到釋放和重用

1.11 異常處理:處理錯(cuò)誤

異常處理將錯(cuò)誤直接置于編程語(yǔ)言中劫侧,異常是一種對(duì)象,它從出錯(cuò)點(diǎn)被拋出哨啃,并被專門設(shè)計(jì)用來(lái)處理特定類型錯(cuò)誤的相應(yīng)的異常處理器“捕獲”烧栋。
java一開(kāi)始內(nèi)置異常處理,而且你必須強(qiáng)制使用它拳球。
異常處理不是面向?qū)ο蟮奶卣魃笮眨M管在面向?qū)ο笳Z(yǔ)言中異常被表示成一個(gè)對(duì)象。異常處理在面向?qū)ο笾熬鸵呀?jīng)存在了祝峻。

1.12 并發(fā)編程

同一時(shí)間處理多個(gè)任務(wù)魔吐。
如果多個(gè)任務(wù)同時(shí)訪問(wèn)同一資源就會(huì)出現(xiàn)數(shù)據(jù)安全問(wèn)題

1.1.3 Java 與Internet

Java解決了萬(wàn)維網(wǎng)上的程序設(shè)計(jì)問(wèn)題

總結(jié) 從對(duì)象的導(dǎo)論來(lái)看 粗略涵蓋java大致內(nèi)容

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末扎筒,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子酬姆,更是在濱河造成了極大的恐慌嗜桌,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辞色,死亡現(xiàn)場(chǎng)離奇詭異骨宠,居然都是意外死亡相满,警方通過(guò)查閱死者的電腦和手機(jī)层亿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)雳灵,“玉大人棕所,你說(shuō)我怎么就攤上這事∶跽蓿” “怎么了琳省?”我有些...
    開(kāi)封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)躲撰。 經(jīng)常有香客問(wèn)我针贬,道長(zhǎng),這世上最難降的妖魔是什么拢蛋? 我笑而不...
    開(kāi)封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任桦他,我火速辦了婚禮,結(jié)果婚禮上谆棱,老公的妹妹穿的比我還像新娘快压。我一直安慰自己,他們只是感情好垃瞧,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布蔫劣。 她就那樣靜靜地躺著,像睡著了一般个从。 火紅的嫁衣襯著肌膚如雪脉幢。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天嗦锐,我揣著相機(jī)與錄音嫌松,去河邊找鬼。 笑死奕污,一個(gè)胖子當(dāng)著我的面吹牛萎羔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播碳默,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼外驱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼育灸!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起昵宇,我...
    開(kāi)封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤磅崭,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后瓦哎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體砸喻,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年蒋譬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了割岛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡犯助,死狀恐怖癣漆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情剂买,我是刑警寧澤惠爽,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站瞬哼,受9級(jí)特大地震影響婚肆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜坐慰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一较性、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧结胀,春花似錦赞咙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至着逐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間意蛀,已是汗流浹背耸别。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留县钥,地道東北人秀姐。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像若贮,于是被迫代替她去往敵國(guó)和親省有。 傳聞我的和親對(duì)象是個(gè)殘疾皇子痒留,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法蠢沿,內(nèi)部類的語(yǔ)法伸头,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法舷蟀,線程的語(yǔ)...
    子非魚_t_閱讀 31,669評(píng)論 18 399
  • 設(shè)計(jì)模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計(jì)原則時(shí)需要注意以下幾點(diǎn):a) 高內(nèi)聚恤磷、低耦合和單一職能的“沖突”實(shí)際上,這兩者...
    彥幀閱讀 3,752評(píng)論 0 14
  • 這段時(shí)間,寶能城冊(cè)之丘不但在深圳紅起來(lái)匈子,也刷爆了地產(chǎn)人的盆友圈河胎,看來(lái)這個(gè)有情懷的售樓處,不但深得深圳市民的心虎敦,也讓...
    李小二說(shuō)事閱讀 2,568評(píng)論 0 0
  • 我不是拜金主義者游岳,但生活讓我明白了一個(gè)道理,貧窮的可怕在于: 它沒(méi)有心疼原茅,沒(méi)有憐憫吭历,更沒(méi)有幫助,既使你在苦苦掙扎擂橘,...
    星辰_star閱讀 193評(píng)論 0 0
  • 燈光悠黃通贞,音樂(lè)輕緩朗若,夜色里,掩掩欲遮的是你的優(yōu)雅昌罩。 你的香水味很淡哭懈,只占據(jù)了我四分之一的鼻息;紅唇不烈茎用,原諒我永遠(yuǎn)...
    我是蘭康閱讀 589評(píng)論 0 1