Swift Review#18[類別與結構Class and Struct-基本概念、區別]補充:如何命名?

前言

過去在讀了對於類別(class)與結構(struct)相關的文章裡,有提過類別與結構的相似與各自的特色,本篇文章會先以描述此兩者的基本概念以及在需要的時候,進行比較,並依照閱讀過的資料稍作整理,最後總結類別與結構的使用需有哪些注意。

正文

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

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

而上述這些東西因為內容、功能各異,將來會有一些相關的說明。

然而類別(class)比起結構(struct)又多出一些東西:

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

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

class、struct裡面可以裝類別的屬性(property)方法(method)其他可以定義的特性

剛開始接觸class、struct的人可能比較不熟悉屬性、方法這兩個詞:

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

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

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

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

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

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

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

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

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

綜合上述,這篇大抵上提到了幾個內容:

  1. 類別(class)、結構(struct)的相同、相異處(因為內容比較繁雜,所以之後另開篇章描述)
  2. 在類別、結構裡面的常數(constant)、變數(variable)就是屬性(property),而函式(function)被稱為方法(method)
  3. 我們建構了class、struct裡面的屬性、方法後,如果要使用它,就必須要把它變成實體(instance),才能實際的使用其中定義的屬性與方法。

補充:如何命名?

大駝峰式命名(upper camel case):類別(class)、結構(struct)大多以此類方式命名。

ex: TerminatorGame、DragonMother、TheWitcher….

:也就是說,每一個有意義的單字的開頭都會是大寫

小駝峰式命名(lower camel case):屬性(property)、方法(method)、常數constant、變數(variable)、函式(function)大多以此類方式命名。

ex: gameComment、playGame….

:第一個字開頭是小寫,爾後有意義的單字才是大寫

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

影山小麥機
影山小麥機

Written by 影山小麥機

本職為Mobile工程師,熱愛分享視野,也樂意站在ChatGPT的肩膀上。訂閱小麥機,收割技術、職涯、人生的難題。

No responses yet

Write a response