iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
Mobile Development

Swift30天:從語法到觀念,告訴你在踏入實作前最好弄清楚的那些事系列 第 7

# Day7--物件兄弟黨:類別與結構

就以基本面來說,類別跟結構都會有一些共同的東西:

  1. 屬性(property):用於儲存值
  2. 方法(method):用於提供功能
  3. 下標(subscript):用於存取值
  4. 建構器(initializer):用於生成初始化值
  5. 擴展(extension):增加預設實作的功能
  6. 協定(protocol):對某類別提供標準功能

而上述這些東西因為內容、功能各異,將來會有一些相關的說明。
然而類別(class)比起結構(struct)又多出一些東西:

  1. 繼承(inherit):類別可以繼承另一個類別的內容
  2. 解構器(deinitializer)允許一個類別實體釋放任何其所被分配的資源
  3. 型別轉換允許在執行時檢查和轉換一個類別實體的型別
  4. 參考計數允許對一個類別實體的多次參考(資料來源:Swift起步走)

上述這些東西大抵上是我們在字面上所見的異同,不過就樣態上來說,類別與結構會長得像下面兩者:

class、struct裡面可以裝類別的屬性(property)、方法(method)、其他可以定義的特性。
剛開始接觸class、struct的人可能比較不熟悉屬性、方法這兩個詞:

  1. 類別、結構內的常數、變數,便會被稱為是屬性(property),如下:

像name、height就會是Human裡面的屬性。

  1. 類別、結構裡面的函式,即稱為方法(method):

如func的部分,我設置了一個會回傳睡覺的函式,在實體化為Adam之後,才可以使用Adam來呼叫他下面的方法,即.sleep( )

其他的內容,如下標(subscript)、建構器(intialize)、擴展(extension)、協定(protocol)等內容較為複雜,之後文章會陸續提及。

總之,屬性與方法是類別與結構比較容易理解的內容,而要使用一個在class或struct裡面的函數,必須經過實體化的過成,生成一個實例(instance),如下

就前一個例子來說,我們制定了一個Human的struct,但實際上要取用這個Human裡面的東西,無論是屬性(property)或方法(method),都要經過 let 某個東西 =類別或結構名稱()這個過程。

才會生成一個實際使用的實體(instance)

而這時候,我們就可以對Adam為所欲為了,不管是要叫他睡覺也好或啥鬼的。

綜合上述,這篇大抵上提到了幾個內容:
類別(class)、結構(struct)的相同、相異處(因為內容比較繁雜,所以之後另開篇章描述)

在類別、結構裡面的常數(constant)、變數(variable)就是屬性(property),而函式(function)被稱為方法(method)

我們建構了class、struct裡面的屬性、方法後,如果要使用它,就必須要把它變成實體(instance),才能實際的使用其中定義的屬性與方法。

tags: 鐵人賽

上一篇
# Day6--一個很難駕馭的概念:閉包
下一篇
# Day8--物件兄弟黨的小弟們:屬性與方法
系列文
Swift30天:從語法到觀念,告訴你在踏入實作前最好弄清楚的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 則留言

0
南國安迪
iT邦新手 3 級 ‧ 2021-09-22 16:51:35

是不是有看過里包恩,
喔看錯了,原來是兄弟黨QQ

MJ iT邦新手 4 級 ‧ 2021-09-22 18:42:12 檢舉

哈哈哈哈,我們是同個年代XD

1
wendy
iT邦新手 2 級 ‧ 2021-09-22 16:55:30

看起來跟js有點像

MJ iT邦新手 4 級 ‧ 2021-09-22 18:43:40 檢舉

等你跳槽來Swift =3

我要留言

立即登入留言