【Java筆記整理1-2】面向?qū)ο蟪绦蛟O計OOP的基本概念


引入

如果接觸過面向過程的C語言,那么再來接觸面向?qū)ο蟮腏ava的會很好理解育韩。畢竟OOP只是在過程型語言概念的基礎(chǔ)上克蚂,又添加了許多概念而已。既然添加了許多概念筋讨,照理說Java程序比等價的過程型程序要復雜陨舱,但是實際上編寫良好的Java程序通常要比過程型程序要簡單的多,而且也更易于理解版仔。那么游盲,這么神奇的面向?qū)ο蟪绦蛟O計究竟是怎么樣的呢误墓?


知識點歸納(了解)

對象導論.png

1.抽象過程

1.1所有編程語言都提供抽象機制。人們所能解決問題的復雜性直接取決于抽象的類型和質(zhì)量益缎。
1.2面向?qū)ο笏枷雽嵸|(zhì):程序可以通過添加新類型的對象使自身適用于某個特定問題谜慌。
1.3對象具有狀態(tài)、行為和標識

每個對象都可以擁有內(nèi)部數(shù)據(jù)(它們給出了該對象的狀態(tài))和方法(它們產(chǎn)生行為)莺奔,并且每一個對象都可以唯一地與其他對象區(qū)分開來欣范,亦即每一個可以存在于不同的機器和地址中的對象都有一個唯一的地址。

2.每個對象都有一個接口

2.1類是具有相同特性(數(shù)據(jù)元素)和行為(功能)的對象集合令哟。類實際上是一個數(shù)據(jù)類型
2.2類是對象的抽象集合恼琼,對象是類的具體實例
2.3對象的接口定義了對象可以完成哪些任務。類決定接口屏富。
示例.jpg

3.每個對象都提供服務

3.1把對象當做服務提供者

程序通過調(diào)用其他對象所能提供的服務來向用戶提供服務晴竞。
當要解決一個問題時,我們可以想:我們需要哪些服務來解決這個問題狠半?我們需要什么樣的對象噩死?這就將問題分解為對象集合了。

3.2提高對象的內(nèi)聚性

不將過多的功能集合到一個對象中。每個對象都可以很好的完成一項任務,但不試圖做更多的事情舱禽。還可以在其他地方復用序六。

示例.png

4.被隱藏的具體實現(xiàn)

4.1
程序員分類.png
4.2訪問控制存在原因
  • 讓類消費者無法觸及不應該觸及的部分
  • 允許類創(chuàng)建者可以改變類內(nèi)部的工作方式而不用擔心會影響到類消費者
4.3訪問控制關(guān)鍵字

public、private、protected

5.復用具體實現(xiàn)

5.1組合——利用現(xiàn)成的類合成新的類,實現(xiàn)代碼復用
  • 新的類可以由任意數(shù)量、任意類型的其他對象以任意可以實現(xiàn)新的類的中想要的功能的方式所組成
  • 在創(chuàng)建新類的時候艾扮,組合比繼承更加簡單靈活

6.繼承

6.1繼承——以現(xiàn)有的類為基礎(chǔ),通過添加或修改這個副本來創(chuàng)建新類
  • 當源類(基類占婉、超類泡嘴、父類)發(fā)生變動時,被修改的副本(導出類逆济、繼承類酌予、子類)也會隨之變動
  • 父類型包含所有子類型所共享的特性和行為〗被牛可以創(chuàng)建一個父類型來表示系統(tǒng)中某些對象的核心概念抛虫,從父類型中導出其他子類型來表示此核心可以被實現(xiàn)的各種不同方式。
  • 子類擁有與父類相同的基礎(chǔ)接口
繼承的類型層次結(jié)構(gòu).JPG
6.2繼承后父類與子類的差異性
  • 直接在子類中添加新的方法
  • 覆蓋——改變父類方法的具體實現(xiàn)
差異性.jpg
6.3繼承的is-a關(guān)系與is-like-a關(guān)系
  • is-a關(guān)系:只覆蓋父類的方法简僧,父類與子類的接口完全相同(替代原則)
  • is-like-a關(guān)系:添加新的接口元素建椰,父類無法訪問新添加的方法,父類與子類的接口并不完全相同

7.伴隨多態(tài)的可互換對象

7.1將子類對象當做泛化的父類對象看待

存在的問題:如果某個父類的方法要讓泛化的幾何形狀繪制自己岛马,那么編譯器在編譯時是不可能知道應該執(zhí)行哪一段代碼的棉姐,那么屠列,如何正確的調(diào)用子類對象的代碼呢?

7.2通過向上轉(zhuǎn)型(把子類看做父類的過程)機制實現(xiàn)多態(tài)
向上轉(zhuǎn)型.JPG

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

所有的類最終都繼承自單一的基類Object伞矩。

9.容器(集合)

在任何時候都可以擴充自己以容納置于其中的東西笛洛。
Java中具有滿足不同需要的各種類型的容器,例如List(用于存儲序列)乃坤,Map(用來建立對象之間的關(guān)聯(lián))苛让,Set(每種對象類型只持有一個),還有隊列湿诊、樹狱杰、堆棧等構(gòu)件

  • 不同容器提供了不同類型的接口和外部行為
  • 不同容器對某些操作具有不同的效率
  • 通過參數(shù)化類型(泛型)來限制容器存儲的數(shù)據(jù)類型

10.對象的創(chuàng)建和生命期

使用對象時要特別關(guān)注它們的生成和銷毀方式。

  • Java完全采用了動態(tài)內(nèi)存分配方式厅须。每當想要創(chuàng)建新對象時仿畸,就要使用new關(guān)鍵字來構(gòu)建此對象的動態(tài)實例
  • Java提供“垃圾回收機制”來處理內(nèi)存釋放的問題

11.異常處理

  • 異常處理不是面向?qū)ο蟮奶卣鳎侨绾芜M行錯誤處理一直是最困難的問題之一九杂。
  • 在面向?qū)ο笳Z言中颁湖,異常是一種對象宣蠕,它從出錯地點“拋出”例隆,并被專門設計用來處理特定類型錯誤的相應的異常處理器“捕獲”。
  • 異常提供了一種從錯誤狀況進行可靠恢復的途徑∏朗矗現(xiàn)在不再是只能退出程序镀层,可以經(jīng)常進行校正,并恢復程序的執(zhí)行皿曲,這些都有助于編寫出更健壯的程序

12.并發(fā)編程

  • 同一時刻處理多個任務
  • 共享資源處理過程:某個任務鎖定某項資源唱逢,完成其任務,然后釋放資源鎖屋休,使其他任務可以使用這項資源坞古。

13.Java與Internet

13.1Web是一個巨型客戶/服務器系統(tǒng)
13.2客戶端編程

13.2.1插件
13.2.2腳本語言
13.2.3Java
13.2.4C#和.NET
13.4.5Internet與Intranet

13.3服務器端編程

注意事項

  • 這篇文章其實都是“對象”的大致輪廓而已,有很多知識還是挺模糊不清的劫樟。而且繼承痪枫、多態(tài)、并發(fā)等問題都是只言片語無法了解透徹的叠艳。但是奶陈,正如畫畫都是從大到小,從輪廓到細致一步一步的過程附较。學習這門編程語言也應該有這樣一個過程——先了解整體性的內(nèi)容吃粒,再去逐步細化攻破每個重要點。

Q&A

1.

Q:如何區(qū)別面向過程和面向?qū)ο?br> A:以“行走”為研究對象拒课,那么
面向過程——抬腿徐勃,往前放下事示,抬腿,放下
面向?qū)ο蟆獙⑻仁柚迹畔路庋b成一個對象很魂,這個對象具有“走”的功能


參考資料

《Java編程思想(第四版)》第一章

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市檐涝,隨后出現(xiàn)的幾起案子遏匆,更是在濱河造成了極大的恐慌,老刑警劉巖谁榜,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幅聘,死亡現(xiàn)場離奇詭異,居然都是意外死亡窃植,警方通過查閱死者的電腦和手機帝蒿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巷怜,“玉大人葛超,你說我怎么就攤上這事⊙铀埽” “怎么了绣张?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長关带。 經(jīng)常有香客問我侥涵,道長,這世上最難降的妖魔是什么宋雏? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任芜飘,我火速辦了婚禮,結(jié)果婚禮上磨总,老公的妹妹穿的比我還像新娘嗦明。我一直安慰自己,他們只是感情好蚪燕,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布娶牌。 她就那樣靜靜地躺著,像睡著了一般邻薯。 火紅的嫁衣襯著肌膚如雪裙戏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天厕诡,我揣著相機與錄音累榜,去河邊找鬼。 笑死,一個胖子當著我的面吹牛壹罚,可吹牛的內(nèi)容都是我干的葛作。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼猖凛,長吁一口氣:“原來是場噩夢啊……” “哼赂蠢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起辨泳,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤虱岂,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后菠红,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體第岖,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年试溯,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔑滓。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡遇绞,死狀恐怖键袱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情摹闽,我是刑警寧澤蹄咖,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站钩骇,受9級特大地震影響比藻,放射性物質(zhì)發(fā)生泄漏铝量。R本人自食惡果不足惜倘屹,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慢叨。 院中可真熱鬧纽匙,春花似錦、人聲如沸拍谐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽轩拨。三九已至践瓷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間亡蓉,已是汗流浹背晕翠。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人淋肾。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓硫麻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親樊卓。 傳聞我的和親對象是個殘疾皇子拿愧,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法碌尔,內(nèi)部類的語法浇辜,繼承相關(guān)的語法,異常的語法唾戚,線程的語...
    子非魚_t_閱讀 31,587評論 18 399
  • 面向?qū)ο笾饕槍γ嫦蜻^程奢赂。 面向過程的基本單元是函數(shù)。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,046評論 0 4
  • (接上)為了孩子我承受了太多的苦颈走,淚水忍不住嘩嘩往下流膳灶。第二天我找了人頂班,本想趁著公公外出旅游的這幾天把自己的東...
    方華1閱讀 210評論 0 0
  • 我已經(jīng)好幾天心事重重立由,不能很好的睡著了轧钓。 說不上為什么,我不放心锐膜,我焦慮毕箍,就算我明知我能把所有的事情都做完。 有時...
    微安安安安閱讀 298評論 0 1
  • 呵呵呵
    ZicoTOP閱讀 174評論 1 0