iOS中Swift從開(kāi)始入門到最后的放棄(七),

# Swift類

在 Swift 中類是建立靈活的構(gòu)建塊。類似于常量,變量和函數(shù),用戶可以定義的類的屬性和方法。Swift給我們提供了聲明類,而無(wú)需用戶創(chuàng)建接口和實(shí)現(xiàn)文件的功能。Swift 允許我們創(chuàng)建類作為單個(gè)文件和外部接口,將默認(rèn)在類一次初始化來(lái)創(chuàng)建。

**使用類的好處**

- 繼承獲得一個(gè)類的屬性到其他類

- 類型轉(zhuǎn)換使用戶能夠在運(yùn)行時(shí)檢查類的類型

- 初始化器需要處理釋放內(nèi)存資源

- 引用計(jì)數(shù)允許類實(shí)例有一個(gè)以上的參考

**類和結(jié)構(gòu)的共同特征**

- 屬性被定義為存儲(chǔ)值

- 下標(biāo)被定義為提供訪問(wèn)值

- 方法被初始化來(lái)改善功能

- 初始狀態(tài)是由初始化函數(shù)定義

- 功能被擴(kuò)大,超出默認(rèn)值

- 確認(rèn)協(xié)議功能標(biāo)準(zhǔn)

**語(yǔ)法**

Class classname {

Definition 1

Definition 2

---

Definition N

}

定義類

class student{

var studname: String

var mark: Int

var mark2: Int

}

創(chuàng)建一個(gè)實(shí)例的語(yǔ)法:

let studrecord = student()

示例

class MarksStruct {

var mark: Int

init(mark: Int) {

self.mark = mark

}

}

class studentMarks {

var mark = 300

}

let marks = studentMarks()

println("Mark is \(marks.mark)")

當(dāng)我們使用 playground 運(yùn)行上面的程序,我們得到以下結(jié)果

Mark is 300

訪問(wèn)類屬性作為引用類型

類屬性可使用 '.' 語(yǔ)法來(lái)訪問(wèn)。屬性名稱由 "." 分離在實(shí)例名后。

class MarksStruct {

var mark: Int

init(mark: Int) {

self.mark = mark

}

}

class studentMarks {

var mark1 = 300

var mark2 = 400

var mark3 = 900

}

let marks = studentMarks()

println("Mark1 is \(marks.mark1)")

println("Mark2 is \(marks.mark2)")

println("Mark3 is \(marks.mark3)")

當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果

Mark1 is 300

Mark2 is 400

Mark3 is 900

**類標(biāo)識(shí)符**

在 Swift 引用多個(gè)常量和變量指向的單個(gè)實(shí)例。要了解常量和變量指向一個(gè)特定的類實(shí)例標(biāo)識(shí)操作符的使用。 類實(shí)例總是通過(guò)引用傳遞。在類`NSString`,`NSArray` 和 `NSDictionary` 實(shí)例始終分配作為參考傳遞到現(xiàn)有的實(shí)例,而不是使用一個(gè)副本。

|等同運(yùn)算符 |不相同操算符|

|-----------|------------|

|使用的操作符是 (===)| 使用的操作符是 (!==)|

|當(dāng)兩個(gè)常量或變量指向同一個(gè)實(shí)例返回true|當(dāng)兩個(gè)常數(shù)或變量指向一個(gè)不同的實(shí)例返回true|

class SampleClass: Equatable {

let myProperty: String

init(s: String) {

myProperty = s

}

}

func == (lhs: SampleClass, rhs: SampleClass) -> Bool {

return lhs.myProperty == rhs.myProperty

}

let spClass1 = SampleClass(s: "Hello")

let spClass2 = SampleClass(s: "Hello")

spClass1 === spClass2 // false

println("\(spClass1)")

spClass1 !== spClass2 // true

println("\(spClass2)")

當(dāng)我們使用 playground 運(yùn)行上面的程序,得到以下結(jié)果

main.SampleClass

main.SampleClass

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

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

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