Java編程思想--第1章 對(duì)象導(dǎo)論

1.1 抽象過(guò)程

面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-oriented Programming, OOP)

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

因?yàn)轭惷枋隽司哂邢嗤匦裕〝?shù)據(jù)元素)和行為(功能)的對(duì)象集合,所以一個(gè)類實(shí)際上就是一個(gè)數(shù)據(jù)類型。

要有某種方式產(chǎn)生對(duì)對(duì)象的請(qǐng)求,使對(duì)象完成各種任務(wù)侈离。

每個(gè)對(duì)象都只能滿足某些請(qǐng)求,這些請(qǐng)求由對(duì)象的接口(interface)所定義锹淌,即接口確定了對(duì)某一特定對(duì)象所能發(fā)出的請(qǐng)求备图。

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

可以將對(duì)象理解為服務(wù)提供者,有助于提高對(duì)象的內(nèi)聚性蹦肴。

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

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

Java權(quán)限修飾符:public阴幌,private勺阐,protected卷中。這些訪問(wèn)指定詞(access specifier)決定緊跟其后被定義的東西可以被誰(shuí)使用。

public表示緊隨其后的元素對(duì)任何人都可以使用渊抽;

private表示除了類型創(chuàng)建者和類型內(nèi)部方法外的任何人都不能訪問(wèn)蟆豫,如果外部有人試圖訪問(wèn)private成員,就會(huì)在編譯時(shí)得到錯(cuò)誤懒闷;

protected關(guān)鍵字與private作用相當(dāng)十减,差別僅在于繼承的類可以訪問(wèn)protected成員,但是不能訪問(wèn)private成員毛雇;

Java中還有一種默認(rèn)的訪問(wèn)權(quán)限default嫉称,當(dāng)沒寫前三個(gè)修飾符的時(shí)候,默認(rèn)就是這個(gè)灵疮。也被稱為包訪問(wèn)權(quán)限织阅,類可以訪問(wèn)在一個(gè)包中的其他類成員,但是包外的不行震捣。

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

最簡(jiǎn)單的復(fù)用某個(gè)類的方式就是直接使用該類的對(duì)象荔棉;

也可以將那個(gè)類的一個(gè)對(duì)象置于某個(gè)新的類中。新的類可以由任意數(shù)量蒿赢、任意類型的其他對(duì)象以任何可以實(shí)現(xiàn)新的類中想要的功能的方式所組成润樱,即使用現(xiàn)有的類合成新的類,所以稱為組合羡棵。

1.6 繼承

在創(chuàng)建一個(gè)類之后壹若,即使另外一個(gè)類與其具有相似的功能,還是需要重新創(chuàng)建一個(gè)新的類皂冰,效率太低店展。

繼承是使用已存在的類的定義作為基礎(chǔ)建立新類的技術(shù),新類的定義可以增加新的數(shù)據(jù)或新的功能秃流,也可以用父類的功能赂蕴,但不能選擇性地繼承父類。

實(shí)際上繼承者(稱為導(dǎo)出類舶胀、繼承類或子類)是被繼承者(稱為源類概说、基類、超類或父類)的特殊化嚣伐,它除了擁有被繼承者的特性外糖赔,還擁有自己獨(dú)有得特性。

【注意】

子類擁有父類非private的屬性和方法纤控。

子類可以擁有自己屬性和方法挂捻,即子類可以對(duì)父類進(jìn)行擴(kuò)展。

子類可以用自己的方式實(shí)現(xiàn)父類的方法船万。

有兩種方法可以使父類和子類產(chǎn)生差異:1.直接在子類中添加新的方法刻撒;2.覆蓋(重寫)父類的方法。

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

在處理類型的層次結(jié)構(gòu)時(shí)耿导,經(jīng)常想把一個(gè)對(duì)象不當(dāng)作它所屬的特定類型來(lái)對(duì)待声怔,而是將其當(dāng)作其基類的對(duì)象來(lái)對(duì)待。這使得人們可以編寫出不依賴于特定類型的代碼舱呻。

通過(guò)導(dǎo)出新的子類類型而輕松擴(kuò)展設(shè)計(jì)的能力是對(duì)改動(dòng)進(jìn)行封裝的基本方式之一醋火。

在Java中動(dòng)態(tài)綁定是默認(rèn)的,不需要添加額外的關(guān)鍵字來(lái)實(shí)現(xiàn)多態(tài)箱吕。

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

在Java中所有的類都是繼承自單一的類:Object

在單根繼承結(jié)構(gòu)中的所有對(duì)象都具有一個(gè)共有接口芥驳,所以他們歸根結(jié)底都是相同的基本類型;

單繼承結(jié)構(gòu)保證了所有對(duì)象都具有某些功能茬高;

單繼承結(jié)構(gòu)使垃圾回收變得容易很多兆旬。

1.9 容器

對(duì)容器需要選擇的原因:1.不同的容器具有不同的功能;2.不同容器處理問(wèn)題的效率不同怎栽。

參數(shù)化類型就是一個(gè)編譯器可以自動(dòng)定制作用于特定類型上的類丽猬。

ArrayList shapes = new ArrayList();

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

1.對(duì)象創(chuàng)建的方法:

1)將對(duì)象置于堆棧中(他們有時(shí)被稱為自動(dòng)變量)或限域變量或靜態(tài)存儲(chǔ)區(qū)域內(nèi)來(lái)實(shí)現(xiàn)。這種方式將存儲(chǔ)空間分配和釋放置于優(yōu)先考慮的位置熏瞄,某些情況下這樣控制有價(jià)值脚祟,但是也犧牲了靈活性,因?yàn)楸仨氃诰帉懗绦驎r(shí)知道對(duì)象確切的數(shù)量强饮、生命周期和類型由桌。

2)在堆的內(nèi)存池中動(dòng)態(tài)得創(chuàng)建對(duì)象。在這種方式中邮丰,直到運(yùn)行時(shí)候才知道需要多少對(duì)象行您,他們的生命周期如何,以及他們的具體類型是什么柠座。這些問(wèn)題的答案只有在程序運(yùn)行時(shí)相關(guān)代碼被執(zhí)行的那一刻才知道邑雅。若需要?jiǎng)?chuàng)建一個(gè)對(duì)象,可以在需要的時(shí)刻直接在堆中創(chuàng)建妈经。Java完全采用動(dòng)態(tài)內(nèi)存分配方式淮野。每當(dāng)要?jiǎng)?chuàng)建新的對(duì)象時(shí),用new關(guān)鍵字來(lái)構(gòu)建此對(duì)象的實(shí)例吹泡。

2.對(duì)象的生命周期:

對(duì)于允許在堆棧上創(chuàng)建對(duì)象的語(yǔ)言骤星,編譯器可以知道對(duì)象存活的時(shí)間,并可以自動(dòng)銷毀爆哑。若在堆上創(chuàng)建對(duì)象洞难,編譯器完全不知道對(duì)象的生命周期,這樣可能會(huì)導(dǎo)致內(nèi)存泄漏揭朝。Java提供了垃圾回收機(jī)制队贱,它可以自動(dòng)發(fā)現(xiàn)對(duì)象何時(shí)不再被使用色冀,并且銷毀它。這一點(diǎn)同所有對(duì)象都是繼承自單根基類Object以及只能以一種方式創(chuàng)建對(duì)象(在堆上創(chuàng)建)這兩個(gè)特性結(jié)合起來(lái)柱嫌。垃圾回收器減少了所必須考慮的議題和必須編寫的代碼锋恬。

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

異常是一種對(duì)象,它從出錯(cuò)地點(diǎn)被“拋出”编丘,并被專門設(shè)計(jì)用來(lái)處理特定類型錯(cuò)誤的異常處理器“捕獲”与学。異常處理就像是與程序正常執(zhí)行路徑并行的、在錯(cuò)誤發(fā)生時(shí)執(zhí)行的另一條路徑嘉抓。異常不能被忽略索守,所以它保證一定會(huì)在某處得到處理。

異常提供了一種從錯(cuò)誤狀況進(jìn)行可靠恢復(fù)的途徑抑片。

1.12 并發(fā)編程

最主要的問(wèn)題是共享資源:某個(gè)任務(wù)鎖定某項(xiàng)資源卵佛,完成任務(wù),釋放資源鎖蓝丙,其他的任務(wù)可以使用這項(xiàng)資源级遭。

1.13 Java和Internet

現(xiàn)在主要應(yīng)用于B/S編程。

需要知道http和https的區(qū)別渺尘;在瀏覽器上輸入一個(gè)地址后的運(yùn)行過(guò)程挫鸽。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市鸥跟,隨后出現(xiàn)的幾起案子丢郊,更是在濱河造成了極大的恐慌,老刑警劉巖医咨,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枫匾,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拟淮,警方通過(guò)查閱死者的電腦和手機(jī)干茉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)很泊,“玉大人角虫,你說(shuō)我怎么就攤上這事∥欤” “怎么了戳鹅?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)昏兆。 經(jīng)常有香客問(wèn)我枫虏,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任隶债,我火速辦了婚禮腾它,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘燃异。我一直安慰自己携狭,他們只是感情好继蜡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布回俐。 她就那樣靜靜地躺著,像睡著了一般稀并。 火紅的嫁衣襯著肌膚如雪仅颇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天碘举,我揣著相機(jī)與錄音忘瓦,去河邊找鬼。 笑死引颈,一個(gè)胖子當(dāng)著我的面吹牛耕皮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝙场,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼凌停,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了售滤?” 一聲冷哼從身側(cè)響起罚拟,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎完箩,沒想到半個(gè)月后赐俗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡弊知,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年阻逮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秩彤。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡叔扼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出呐舔,到底是詐尸還是另有隱情币励,我是刑警寧澤,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布珊拼,位于F島的核電站食呻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜仅胞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一每辟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧干旧,春花似錦渠欺、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至编整,卻和暖如春舔稀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背掌测。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工内贮, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汞斧。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓夜郁,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親粘勒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子竞端,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

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