摘要:龔先生是一位在當地非常有名氣的廚師,但他對自己用的鍋一直不太滿意,于是打算自己造一個龔先生想好了。
1.什么是面向對象
面向對象是一種思維方式[與語言無關],教你如何思考代碼
Object Oriented Programming
orient 的英文意思 是 使朝向
那么,面向對象不如說成是以對象為目標的一種編程思維方式
好了,現在讓我們進入正題
面向對象的難點之一就是它有一大堆的概念——類、實例、成員等等,為了讓我們更好地理解這些概念,我們從一個故事講起。
龔先生是一位在當地非常有名氣的廚師,但他對自己用的鍋一直不太滿意,于是打算自己造一個
龔先生想好了。他的第一個鍋必須要劍走偏鋒,于是起名為“日天鍋”,并且得是金色的,而且必須要用寒鐵制造,方能展現實力
龔先生風風火火畫好了一份設計圖紙
// 日天鍋 // --------- // 顏色:金 // 用料:鈦合金 // 功能:炒菜()
日天鍋造出來后,龔先生如有神助,手藝直線上升,日天鍋的大名就此傳開
某日,一土豪前來,讓龔先生為他也定做一款日天鍋,不過這次要鑲嵌24顆鉆石
龔先生欣然接受,并畫好了第二份設計圖紙,只是 在原有的基礎上鑲嵌了鉆石
// 鑲鉆日天鍋 // --------- // 鑲嵌物:鉆石
土豪把鑲鉆日天鍋帶回家后,瞬間得到了一眾土豪太太和她的閨蜜圈的喜愛,大家紛紛詢問能否批量生產,在原有的基礎上加上煮菜功能
龔先生自然不會放過這個賺錢的機會,于是乎畫出了第三份圖紙, 只是在【鑲鉆日天鍋】原有的基礎上增加了新功能
// 鑲鉆日天鍋——土豪太太版 // --------- // 新功能:煮菜()
從那以后龔先生再也沒有炒過菜,而是專心致志進行著造鍋業務,而且大力發展物流業務,努力早日讓客戶享受到“人在家中坐,鍋從天上來”的頂級服務2.1類/實例/成員/方法/實例成員/靜態類
完
根據這個故事,我們來解釋一下面向對象一些名字非常抽象的概念^_^:
類:龔先生的設計圖紙就是類【你也可以把類理解成一個constructor[構造器]】
實例(對象):龔先生根據圖紙制造出來的鍋就是實例【實例其實就是對象,只不過在面向對象中叫做實例】
成員(屬性):龔先生的圖紙里,例如顏色、用料等,這些被稱為成員
方法(函數):龔先生圖紙里,例如炒菜()、煮菜()
實例成員:也就是實例的屬性,比如日天鍋的顏色
靜態類:無法實例化的類,龔先生日后可能會搞出一些奇怪的圖紙,這些圖紙根本邏輯可能就是錯的,以至于根據這個圖紙是造不出來鍋的
2.2繼承和封裝 2.2.1繼承好吧,讓我們來看看龔先生的鍋的廣告詞
鑲鉆日天鍋2.2.2封裝
這款鍋不僅 繼承了日天鍋的金色和鈦合金用料還有炒菜功能 ,而且還新增了24課鉆石鑲嵌于其上,你還在等什么?
下一款
鉆石日天鍋——土豪太太版
這款產品不僅擁有新功能煮菜,而且還 繼承了日天鍋的金色和鈦合金用料還有炒菜功能 和 鑲鉆日天鍋的24顆鉆石 ,你還在等什么?
讓我們暫時遠離一下龔先生和他該死的鍋
封裝的概念其實就是把一些復雜的東西封裝成一個類——把細節隱藏起來
什么意思呢?
比如你拿到一個大補藥方,里面讓你把當歸、人參、枸杞找來,每個兩百克在一塊兒煮一個時辰【大家別亂試,只是舉個例子】,你只要通過你的大補藥方,就能造出【實例化】大補藥,而無需了解當歸、人參、枸杞他們分別有什么作用,如何種植這些本就無需了解的細節
這就是封裝的優勢
// JavaScripter的代碼 var bluesbone = {name: "Bruce"} // Java程序員說 // 不行!你的圖紙呢?bluesbone這個實例怎么直接出來了? // 經過Java程序員的修改后 var bluesbone = new Object() bluesbone.name = "Bruce"
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107441.html
摘要:墻裂建議您在看這篇文章之前閱讀一遍我之前寫的文章深入淺出面向對象和原型概念篇,因為此篇文章涉及到不少相關概念都在上篇文章里啦簡單復習對象對象是老生常談的概念了,在這里我們來簡單復習一下對象內儲存一個對象對象是一個儲存一系列無序鍵值對的集合的 墻裂建議您在看這篇文章之前閱讀一遍我之前寫的文章深入淺出面向對象和原型【概念篇1】,因為此篇文章涉及到不少相關概念都在上篇文章里啦 1.1 簡單...
摘要:由一個問題引發的思考這個方法是從哪兒蹦出來的首先我們要清楚數組也是對象,而且是對象的實例也就是說,下面兩種形式是完全等價的只不過是一種字面量的寫法,在深入淺出面向對象和原型概念篇文章里,我們提到過類會有一個屬性,而這個類的實例可以通過屬性訪 1.由一個問題引發的思考 let arr1 = [1, 2, 3] let arr2 = [4, 5, 6] arr1.c...
摘要:前言我們在深入淺出面向對象和原型概念篇在這篇文章中了解到了如何使用解決重復創建浪費內存的問題,其中的關鍵就是,那么這篇文章讓我們來重新了解的前世今生一個苦逼年級主任的故事開學啦高一年級主任龔主任需要為全年級每一位理科班新生錄入學號并為每一位 前言 我們在深入淺出面向對象和原型【概念篇2】在這篇文章中了解到了如何使用new Function解決重復創建浪費內存的問題,其中的關鍵就是new...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
摘要:很多情況下,通常一個人類,即創建了一個具體的對象。對象就是數據,對象本身不包含方法。類是相似對象的描述,稱為類的定義,是該類對象的藍圖或原型。在中,對象通過對類的實體化形成的對象。一類的對象抽取出來。注意中,對象一定是通過類的實例化來的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 馬上就要到七夕了,離年底老媽老爸...
閱讀 3715·2021-10-14 09:43
閱讀 3311·2021-08-25 09:38
閱讀 609·2019-08-30 15:55
閱讀 1342·2019-08-30 13:05
閱讀 2237·2019-08-29 16:05
閱讀 500·2019-08-29 12:58
閱讀 2790·2019-08-29 12:34
閱讀 3241·2019-08-26 12:15