面向對象是一種思惟方式[與語言無關],教你如何思考代碼
Object Oriented Programming
orient 的英文意思 是 使朝向
那麼,面向對象不如說成是以對象爲目標的一種編程思惟方式程序員
好了,如今讓咱們進入正題編程
面向對象的難點之一就是它有一大堆的概念——類、實例、成員等等,爲了讓咱們更好地理解這些概念,咱們從一個故事講起。函數
龔先生是一位在當地很是有名氣的廚師,但他對本身用的鍋一直不太滿意,因而打算本身造一個
龔先生想好了。他的第一個鍋必需要劍走偏鋒,因而起名爲「日天鍋」,而且得是金色的,並且必需要用寒鐵製造,方能展示實力
龔先生風風火火畫好了一份設計圖紙
// 日天鍋 // --------- // 顏色:金 // 用料:鈦合金 // 功能:炒菜()
日天鍋造出來後,龔先生若有神助,手藝直線上升,日天鍋的大名就此傳開
某日,一土豪前來,讓龔先生爲他也定作一款日天鍋,不過此次要鑲嵌24顆鑽石
龔先生欣然接受,並畫好了第二份設計圖紙,只是 在原有的基礎上鑲嵌了鑽石
// 鑲鑽日天鍋 // --------- // 鑲嵌物:鑽石
土豪把鑲鑽日天鍋帶回家後,瞬間獲得了一衆土豪太太和她的閨蜜圈的喜好,你們紛紛詢問可否批量生產,在原有的基礎上加上煮菜功能
龔先生天然不會放過這個賺錢的機會,因而乎畫出了第三份圖紙, 只是在【鑲鑽日天鍋】原有的基礎上增長了新功能
// 鑲鑽日天鍋——土豪太太版 // --------- // 新功能:煮菜()
從那之後龔先生再也沒有炒過菜,而是專心致志進行着造鍋業務,並且大力發展物流業務,努力早日讓客戶享受到「人在家中坐,鍋從天上來」的頂級服務
完
根據這個故事,咱們來解釋一下面向對象一些名字很是抽象的概念^_^:設計
好吧,讓咱們來看看龔先生的鍋的廣告詞code
鑲鑽日天鍋
這款鍋不只 繼承了日天鍋的金色和鈦合金用料還有炒菜功能 ,並且還新增了24課鑽石鑲嵌於其上,你還在等什麼?
下一款
鑽石日天鍋——土豪太太版
這款產品不只擁有新功能煮菜,並且還 繼承了日天鍋的金色和鈦合金用料還有炒菜功能 和 鑲鑽日天鍋的24顆鑽石 ,你還在等什麼?
讓咱們暫時遠離一下龔先生和他該死的鍋
封裝的概念其實就是把一些複雜的東西封裝成一個類——把細節隱藏起來
什麼意思呢?
好比你拿到一個大補藥方,裏面讓你把當歸、人蔘、枸杞找來,每一個兩百克在一起煮一個時辰【你們別亂試,只是舉個例子】,你只要經過你的大補藥方,就能造出【實例化】大補藥,而無需瞭解當歸、人蔘、枸杞他們分別有什麼做用,如何種植這些本就無需瞭解的細節
這就是封裝的優點對象
// JavaScripter的代碼 var bluesbone = {name: "Bruce"} // Java程序員說 // 不行!你的圖紙呢?bluesbone這個實例怎麼直接出來了? // 通過Java程序員的修改後 var bluesbone = new Object() bluesbone.name = "Bruce"