Swift文件Chapter 9 類和結構體
阿新 • • 發佈:2022-01-24
結構體和類是一種通用而靈活的結構。
結構體和類的對比
結構體和類的共同點:
- 定義屬性用於儲存值;
- 定義方法用於提供功能;
- 定義下標操作用於通過下標語法訪問它們的值;
- 定義構造器用於設定初始值;
- 通過擴充套件增加預設實現以外的功能;
- 遵循協議以提供某種標準功能。
類還有額外的功能:
- 繼承允許一個類繼承另一個類的特徵;
- 型別轉換允許在執行時檢查和解釋一個類例項的型別;
- 析構器允許一個類例項釋放任何其所分配的資源;
- 引用計數允許對一個類的多次引用。
定義語法
結構體使用struct
關鍵字定義,類使用class
關鍵字定義。
struct StructName { statements } class ClassName{ statements }
類和結構體使用
UpperCamelCase
的方式來命名,屬性和方法採用lowerCamelCase
的方式進行命名。
結構體和類的例項
宣告一個新的類只需要ClassName()
就可以了,這種方式下所有的成員都會賦預設初始值。
屬性訪問
屬性的訪問使用.
即可訪問。也可以為可變屬性賦值。
結構體型別成員逐一構造器
結構體會自動生成一個成員逐一構造器。可以通過屬性名稱傳遞各個屬性初始值。在括號中直接通過類似於函式輸入引數的方式。
類沒有預設的成員逐一構造器。
結構體和列舉是值型別
值型別是這樣一種型別,當它被賦值給一個變數、常量或者被傳遞給一個函式的時候,其值會被拷貝。
Swift中所有的結構體和列舉型別都是值型別。這意味著它們的例項,以及例項中所包含的任何值型別的屬性,在程式碼中傳遞的時候都會被複制。
類是引用型別
與值型別不同,引用型別在被賦予到一個變數、常量或者被傳遞到一個函式時,其值不會被拷貝。因此,使用的是已存在例項的引用,而不是其拷貝。
即使把一個類宣告成常量,屬性依然是可以改變的,這是因為常量中儲存的是類的引用。
恆等運算子
===
:兩個常量或者變數是否引用了同一個例項;!==
:兩個常量或者變數是否沒有引用同一個例項。