iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0
Mobile Development

如何成為IOS初級工程師系列 第 5

Day-05 想要設計夢想藍圖? - class&struct

  • 分享至 

  • xImage
  •  

我們今天直接進入正題

Class

今天要來講講類別class,在物件導向程式設計(OOP)中是一種物件導向電腦程式語言的構造,是建立物件的藍圖,描述了所建立的物件共同的特性和方法。您可以定義屬性(Property)方法(Method)。看到一堆不懂的東西不要緊張,屬性、方法和物件導向程式設計我們之後會有章節為大家說明。

下面引用自維基百科讓大家好理解

在現實世界中,經常有屬於同一個類別(class)的物件。例如,某輛自行車只是世界上很多自行車中的一輛。在物件導向軟體中,也有很多共享相同特徵的不同的物件:腳踏車、普通機車、重型機車等。可以利用這些物件的相同特徵為它們建立一個藍圖稱為類別(class)。

簡單來說腳踏車製造商想要設計腳踏車的藍圖,然後在藍圖裡面添加屬性(顏色、重量)及方法(煞車、變速),那這個藍圖我們就叫做class,藉由這個藍圖腳踏車製造商就可以大量製造腳踏車了。

下面我們用程式碼為大家說明

class Bicycle {         //最原始腳踏車的藍圖
    var level = 1       //變速等級1
    let wheels = 2      //有兩個輪子
    func addLevel(by number: Int) {   //有加變速等級的功能
        level += number
    }
    func reduceLevel(by number: Int) { //也有減變速等級的功能
        level -= number
    }
}

上面的程式碼中,用來形容腳踏車的就是屬性(property),而裡面的func簡單來說就是方法(method)
那接下來我們要講解class的繼承特性
簡單來說今天腳踏車商想開發一種新的腳踏車,那我們要重頭畫一份藍圖嗎?不用,因為每輛腳踏車肯定都有兩個輪子跟變速功能嘛,所以我們只要建立新的藍圖裡面寫新的功能就行了,然後繼承原本的藍圖,下面進行範例

class superBicycle: Bicycle {    //我們繼承bicycle藍圖,製作一個新的藍圖叫superBicycle
    var color = "red"  //顏色是紅色的
    var weight = 5     //腳踏車5公斤
}

所以superBicycle藍圖裡也會有兩個輪子跟變速功能囉,是不是很易懂,那class就先講到這。

Struct

struct跟class有著兄弟情誼,兩者很多時候是通用的,我們需要知道一些底層的知識。

下方引用自Alpha camp

記憶體分成 heap 和 stack 兩塊。class 物件是 reference type,會被儲存在 heap ; struct 物件是 value type,會被存在 stack。一般而言, stack 的執行效率會比 heap 好,所以一模一樣的事情,交給 struct 做,理論上會比 class 有效率,不過「寫出好讀、好維護的程式碼」大部分的時候比「寫出高效能的程式碼」重要。

下面我用最最最簡單讓你理解的方式說明
Value type ── 你複製一份新的藍圖到本地端,你如果改動新的藍圖,原本的藍圖不會有任何改動。
Reference type ── 藍圖在雲端上,大家共用同一份藍圖

網路上有很多文章都有介紹class跟struct的差異,可以看這篇文章,也有解釋什麼是OOP跟POP,回家作業就是把連結的文章看一看吧~


上一篇
Day-04 控制流(control flow)與函式(Function) - 基礎語法(2)
下一篇
Day-06 - 組團囉,到底是有還是沒有 - Enum, Optional
系列文
如何成為IOS初級工程師30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言