類和結構體 - 物件導向程式設計、屬性和方法
學習 Swift 類和結構體:物件導向程式設計基礎、屬性、方法、建構函式,與 JavaScript 對比
類和結構體:物件導向程式設計、屬性和方法
在本模組中,我們將探索 Swift 中的物件導向程式設計(OOP),並與 JavaScript 的類和原型系統進行對比。Swift 提供了類(參考類型)和結構體(值類型),每種都有其特定的用例和特性。
目錄
介紹:類與結構體
- 類:參考類型,支援繼承、解構器、身份比較、參考語義。
- 結構體:值類型,不支援繼承,賦值時複製,值語義,輕量級,適合簡單資料模型。
特性 | JavaScript 類 | Swift 類 | Swift 結構體 |
---|---|---|---|
參考類型 | 是 | 是 | 否 |
值類型 | 否 | 否 | 是 |
繼承 | 是 | 是 | 否 |
解構器 | 否 | 是 | 否 |
可變性 | 動態 | 受控 | 受控 |
協議 | 否(介面) | 是 | 是 |
使用場景 | 所有 OOP | OOP | 資料模型、輕量級類型 |
宣告類和結構體
正在加载...
屬性
Swift 支援儲存屬性、計算屬性和屬性觀察器。JavaScript 的屬性總是動態的。
正在加载...
方法
JavaScript 和 Swift 都支援實例方法。Swift 還支援靜態/類方法和結構體的可變方法。
正在加载...
初始化器(建構函式)
Swift 使用 init
作為初始化器。結構體預設獲得成員初始化器。
正在加载...
繼承和多態
Swift 類支援單繼承,而 JavaScript 類也支援單繼承,但可以使用混入和組合。
基本繼承
正在加载...
多態
正在加载...
值類型與參考類型
這是 Swift 和 JavaScript 之間的根本差異。
參考類型(類)
正在加载...
值類型(結構體)
正在加载...
協議(介面)
Swift 協議類似於 JavaScript 介面,但功能更強大。
正在加载...
進階特性
屬性包裝器和計算屬性
正在加载...
靜態和類方法
正在加载...
練習題
練習 1:建立學生管理系統
正在加载...
練習 2:實現形狀層次結構
正在加载...
關鍵要點
Swift OOP 優勢
- 值類型:結構體提供值語義,防止意外突變
- 類型安全:強類型防止執行時錯誤
- 協議:類和結構體的靈活介面系統
- 屬性觀察器:內建的屬性變化通知支援
- 記憶體管理:ARC 自動處理記憶體
與 JavaScript 的關鍵差異
- 值 vs 參考:Swift 區分值類型和參考類型
- 繼承:只有 Swift 類支援繼承
- 可變性:Swift 結構體需要顯式的可變方法
- 協議:Swift 有正式的協議系統 vs JavaScript 鴨子類型
- 記憶體管理:ARC vs 垃圾回收
最佳實踐
- 對簡單資料模型使用結構體和值語義
- 對需要繼承的複雜物件使用類
- 利用協議實現靈活介面
- 盡可能優先使用組合而非繼承
- 使用屬性觀察器進行響應式程式設計
- 考慮值類型的執行緒安全性和效能
下一步
在下一個模組中,我們將探索 Swift 中的協議和擴展,包括協議導向程式設計、協議擴展,以及它們與 JavaScript 介面和混入方法的對比。