深刻淺出面向對象和原型【概念篇1】

1.什麼是面向對象

面向對象是一種思惟方式[與語言無關],教你如何思考代碼
Object Oriented Programming
orient 的英文意思 是 使朝向
那麼,面向對象不如說成是以對象爲目標的一種編程思惟方式程序員

2.面向對象的主要概念淺析

好了,如今讓咱們進入正題編程

面向對象的難點之一就是它有一大堆的概念——類、實例、成員等等,爲了讓咱們更好地理解這些概念,咱們從一個故事講起。函數


龔先生是一位在當地很是有名氣的廚師,但他對本身用的鍋一直不太滿意,因而打算本身造一個
龔先生想好了。他的第一個鍋必需要劍走偏鋒,因而起名爲「日天鍋」,而且得是金色的,並且必需要用寒鐵製造,方能展示實力
龔先生風風火火畫好了一份設計圖紙
// 日天鍋
    // ---------
    // 顏色:金
    // 用料:鈦合金
    // 功能:炒菜()
日天鍋造出來後,龔先生若有神助,手藝直線上升,日天鍋的大名就此傳開
某日,一土豪前來,讓龔先生爲他也定作一款日天鍋,不過此次要鑲嵌24顆鑽石
龔先生欣然接受,並畫好了第二份設計圖紙,只是 在原有的基礎上鑲嵌了鑽石
// 鑲鑽日天鍋
    // ---------
    // 鑲嵌物:鑽石
土豪把鑲鑽日天鍋帶回家後,瞬間獲得了一衆土豪太太和她的閨蜜圈的喜好,你們紛紛詢問可否批量生產,在原有的基礎上加上煮菜功能
龔先生天然不會放過這個賺錢的機會,因而乎畫出了第三份圖紙, 只是在【鑲鑽日天鍋】原有的基礎上增長了新功能
// 鑲鑽日天鍋——土豪太太版
    // ---------
    // 新功能:煮菜()
從那之後龔先生再也沒有炒過菜,而是專心致志進行着造鍋業務,並且大力發展物流業務,努力早日讓客戶享受到「人在家中坐,鍋從天上來」的頂級服務

2.1類/實例/成員/方法/實例成員/靜態類

根據這個故事,咱們來解釋一下面向對象一些名字很是抽象的概念^_^:設計

  1. :龔先生的設計圖紙就是類【你也能夠把類理解成一個constructor[構造器]】
  2. 實例(對象):龔先生根據圖紙製造出來的鍋就是實例【實例其實就是對象,只不過在面向對象中叫作實例】
  3. 成員(屬性):龔先生的圖紙裏,例如顏色、用料等,這些被稱爲成員
  4. 方法(函數):龔先生圖紙裏,例如炒菜()、煮菜()
  5. 實例成員:也就是實例的屬性,好比日天鍋的顏色
  6. 靜態類:沒法實例化的類,龔先生往後可能會搞出一些奇怪的圖紙,這些圖紙根本邏輯可能就是錯的,以致於根據這個圖紙是造不出來鍋的

2.2繼承和封裝

2.2.1繼承

好吧,讓咱們來看看龔先生的鍋的廣告詞code

鑲鑽日天鍋
這款鍋不只 繼承了日天鍋的金色和鈦合金用料還有炒菜功能 ,並且還新增了24課鑽石鑲嵌於其上,你還在等什麼?
下一款
鑽石日天鍋——土豪太太版
這款產品不只擁有新功能煮菜,並且還 繼承了日天鍋的金色和鈦合金用料還有炒菜功能鑲鑽日天鍋的24顆鑽石 ,你還在等什麼?

2.2.2封裝

讓咱們暫時遠離一下龔先生和他該死的鍋
封裝的概念其實就是把一些複雜的東西封裝成一個類——把細節隱藏起來
什麼意思呢?
好比你拿到一個大補藥方,裏面讓你把當歸、人蔘、枸杞找來,每一個兩百克在一起煮一個時辰【你們別亂試,只是舉個例子】,你只要經過你的大補藥方,就能造出【實例化】大補藥,而無需瞭解當歸、人蔘、枸杞他們分別有什麼做用,如何種植這些本就無需瞭解的細節
這就是封裝的優點對象

3.輕鬆一刻

// JavaScripter的代碼
    var bluesbone = {name: "Bruce"}
  // Java程序員說
    // 不行!你的圖紙呢?bluesbone這個實例怎麼直接出來了?

    // 通過Java程序員的修改後
    var bluesbone = new Object()
    bluesbone.name = "Bruce"
相關文章
相關標籤/搜索