Swift - 類和結(jié)構(gòu)體

類和結(jié)構(gòu)體是人們構(gòu)建代碼所用的一種通用且靈活的構(gòu)造體。在Swift中類和結(jié)構(gòu)體類似,可以把結(jié)構(gòu)體理解成是一種輕量級的類。
1.類和結(jié)構(gòu)體的定義
類是一種復(fù)雜的數(shù)據(jù)類型,它將不同類型的數(shù)據(jù)和與這些數(shù)據(jù)的相關(guān)操作封裝在一起,其中“數(shù)據(jù)的相關(guān)操作”就是方法,方法可能要明天更新。
結(jié)構(gòu)體和類相似,用來封裝具有相同類型活不同類型的一系列數(shù)據(jù)。但是在C和OC中,結(jié)構(gòu)體功能單一,很少使用。在Swift中,結(jié)構(gòu)體不僅可以定義成員變量還可以定義成員方法,是一種很重要的數(shù)據(jù)類型。
下面來看一下類和結(jié)構(gòu)體的語法格式。
類的語法格式:

class name: super class {   // name即類名   super class 即父類
    code   // 在這里定義類的內(nèi)容
}

結(jié)構(gòu)體的語法格式:

struct name {   // 結(jié)構(gòu)體名稱
    fields      // 定義結(jié)構(gòu)體的內(nèi)容
}

當(dāng)然在playground中定義一個類,需要跟上面的格式一樣。在一個工程中,用Xcode直接就可以創(chuàng)建一個類,看一下下面的截圖就明白了:

NewClass為新建的類

2.類和結(jié)構(gòu)體的實例
(1)類的實例及訪問

class Student {
    var age:Int = 0
    var name:String = ""
}
var stu = Student()
stu.age = 18
stu.name = "小明"

在上面的代碼中,“Student()”表示使用構(gòu)造函數(shù)創(chuàng)建了一個Student實例,這是創(chuàng)建實例最簡單的一種方式。通過這種方式所創(chuàng)建的類實例,其屬性均會被初始化為默認(rèn)值。

在Swift中,類是引用類型的,與值類型不同,引用類型在被賦予到一個變量、常量或者被傳遞到一個函數(shù)式,其值不會被拷貝。

(2)結(jié)構(gòu)體的實例及訪問
Swift要求實例化一個結(jié)構(gòu)體時,所有成員變量都必須有初始值,構(gòu)造函數(shù)的意義就是用于初始化所有成員變量的。
如果在定義結(jié)構(gòu)體時,所包含的屬性都有默認(rèn)值,那么可以直接使用()來構(gòu)造一個結(jié)構(gòu)體實體。如果結(jié)構(gòu)體中的屬性沒有設(shè)置默認(rèn)值,那么必須使用結(jié)構(gòu)體的構(gòu)造函數(shù)來實例化結(jié)構(gòu)體。下面是代碼:

struct Person {
    var age:Int = 0
    var name:String = ""
}
var person = Person()
print(person.age)
struct Teacher {
    var name:String
    var age:Int
}
var tea = Teacher(name: "汪",age: 25)

結(jié)構(gòu)體是值類型,所以在代碼中傳遞的時候都會被復(fù)制。

3.類和結(jié)構(gòu)體對比
共同點:
(1)定義屬性用于存儲值;
(2)定義方法用于提供功能;
(3)定義下標(biāo)用于通過小兵語法訪問值;
(4)定義構(gòu)造函數(shù)用于生成初始化值;
(5)通過擴展以增加默認(rèn)實現(xiàn)的功能;
(6)符合協(xié)議以對某類聽標(biāo)準(zhǔn)功能。

與結(jié)構(gòu)體相比,類還有一些結(jié)構(gòu)體不具備的特性:
(1)集成允許一個類繼承另一個類的特征;
(2)類型轉(zhuǎn)換允許一個類實例釋放任何其所被分配的資源;
(3)取消構(gòu)造函數(shù)允許一個類實例釋放任何其所被分配的資源;
(4)引用計數(shù)允許對一個類的多次引用。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容