尚未建立名稱
能量:0
我的帳號中心
問 學Bot 任何問題!
首頁&搜尋
最愛&收藏
所有課程
分享資源
帳號設定
關於學呀
線上募款
章節設定
章節名稱
章節類別
章節標籤
class
物件與類別
或者建立新標籤
章節內容
全螢幕編輯與預覽
![](https://cdn-media-1.freecodecamp.org/images/M4t8zW9U71xeKSlzT2o8WO47mdzrWkNa4rWv) # 把所有東西變成物件 **物件導向**(object-oriented programming),就是把**大部分**程式內的東西都變成以物件的方式呈現。在這個程式中,物件與物件之間互相區別,但又藉由程式碼互相呼應。 與物件導向相對的是**函式語言**(functional programming)。在這種程式語言中,程式碼與程式碼之間多以函數的方式存在,沒有物件的出現。 在上一章中,我們曾提及所謂的「類別」,在真實的程式語言中,我們會叫它「**class**」。 ## class 的使用 ::: suggestion 這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。 ::: 上一章中,我們曾經使用了「杯子」作為舉例,而現在我們將沿用這個例子: ``` 類別 杯子{ /* .... */ } ``` 我們將之轉變成真實的程式: ``` class cup{ } ``` 接著,讓我們建立一個變數稱作 `bigCup`,並將其設為一個 `cup` 物件: ``` bigCup = cup(); ``` 電腦在看到這段程式後,會將其解讀為: ::: document 建立一個叫做「bigCup」的變數,並且將其設為一個新的「cup」物件。 ::: 之前說過,程式中出現括號,代表的是一個動作。當我們建立了一個類別後,如果我們要建立該類別的物件,我們也可以使用括號。 ## 設定物件的屬性 上一章提到, `.` **在程式中代表「的」的意思**。例如 `document.name` 就可以被解讀成「document 的 name」。現在,我們來將剛剛的 `bigCup` 加上屬性 `color`: ``` bigCup.color = "yellow"; ``` 如果我們要把 `bigCup` 的 `color` 屬性印出來,我們可以說: ``` print(bigCup.color); ``` ::: youtube pTB0EiLXUC8 ::: ::: translation procedure 程序化的 object oriented programming 物件導向程式 method 方法 property 屬性 encapsulation 封裝 redundant 多餘的 inheritance 繼承 polymorphism 多型 ::: # 一個類別,多個物件 現在,假設從現在開始,我們製作的所有杯子都將變成黃色的,而且此時此刻我們要建立 3 個杯子物件,我們將會得到: ``` cup1 = cup(); cup2 = cup(); cup3 = cup(); cup1.color = "yellow"; cup2.color = "yellow"; cup3.color = "yellow"; ``` 這樣子寫起程式來,真是太麻煩了!其實建立一個類別時,我們就可以先設定好該類別自帶的變數。什麼意思呢?既然我們知道所有的杯子都將會有 `color = yellow` 這個屬性,那麼我們在建立 `cup` 的時候,就可以先設定好 `color` 這個變數,如此: ``` class cup{ color = "yellow"; } ``` 這麼一來,每當建立一個新的 `cup` 物件,那個物件就會預設有 `color = yellow` 這個屬性。 ``` cupA = cup(); print(cupA.color); ``` 上述這段程式,將會印出「yellow」,因為在建立 `cup` 時,我們已經將它的 `color` 設為 yellow 啦! 物件導向方便的地方就在此。你可以輕輕鬆鬆建立起很多很多的物件,並用之表達很多很多的東西。若你有架構地將大多數的程式碼變成 class 的形式,不只可以讓程式**運行地更有效率**,還能讓你的程式看起來**更加整潔易懂**哦!
儲存章節
前往實際頁面