1. 程式人生 > 其它 >Swift文件Chapter 9 類和結構體

Swift文件Chapter 9 類和結構體

結構體和類是一種通用而靈活的結構。

結構體和類的對比

結構體和類的共同點

  • 定義屬性用於儲存值;
  • 定義方法用於提供功能;
  • 定義下標操作用於通過下標語法訪問它們的值;
  • 定義構造器用於設定初始值;
  • 通過擴充套件增加預設實現以外的功能;
  • 遵循協議以提供某種標準功能。

類還有額外的功能:

  • 繼承允許一個類繼承另一個類的特徵;
  • 型別轉換允許在執行時檢查和解釋一個類例項的型別;
  • 析構器允許一個類例項釋放任何其所分配的資源;
  • 引用計數允許對一個類的多次引用。

定義語法

結構體使用struct關鍵字定義,類使用class關鍵字定義。

struct StructName {
    statements
}
class ClassName{
    statements
}

類和結構體使用UpperCamelCase的方式來命名,屬性和方法採用lowerCamelCase的方式進行命名。

結構體和類的例項

宣告一個新的類只需要ClassName()就可以了,這種方式下所有的成員都會賦預設初始值。

屬性訪問

屬性的訪問使用.即可訪問。也可以為可變屬性賦值。

結構體型別成員逐一構造器

結構體會自動生成一個成員逐一構造器。可以通過屬性名稱傳遞各個屬性初始值。在括號中直接通過類似於函式輸入引數的方式。
類沒有預設的成員逐一構造器。

結構體和列舉是值型別

值型別是這樣一種型別,當它被賦值給一個變數、常量或者被傳遞給一個函式的時候,其值會被拷貝。
Swift中所有的結構體和列舉型別都是值型別。這意味著它們的例項,以及例項中所包含的任何值型別的屬性,在程式碼中傳遞的時候都會被複制。

類是引用型別

與值型別不同,引用型別在被賦予到一個變數、常量或者被傳遞到一個函式時,其值不會被拷貝。因此,使用的是已存在例項的引用,而不是其拷貝。
即使把一個類宣告成常量,屬性依然是可以改變的,這是因為常量中儲存的是類的引用。

恆等運算子

  • ===:兩個常量或者變數是否引用了同一個例項;
  • !==:兩個常量或者變數是否沒有引用同一個例項。