亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

??? ?? ?? / Swift 類(lèi)

Swift 類(lèi)

Swift 類(lèi)是構(gòu)建代碼所用的一種通用且靈活的構(gòu)造體。

我們可以為類(lèi)定義屬性(常量、變量)和方法。

與其他編程語(yǔ)言所不同的是,Swift 并不要求你為自定義類(lèi)去創(chuàng)建獨(dú)立的接口和實(shí)現(xiàn)文件。你所要做的是在一個(gè)單一文件中定義一個(gè)類(lèi),系統(tǒng)會(huì)自動(dòng)生成面向其它代碼的外部接口。

類(lèi)和結(jié)構(gòu)體對(duì)比

Swift 中類(lèi)和結(jié)構(gòu)體有很多共同點(diǎn)。共同處在于:

  • 定義屬性用于存儲(chǔ)值

  • 定義方法用于提供功能

  • 定義附屬腳本用于訪問(wèn)值

  • 定義構(gòu)造器用于生成初始化值

  • 通過(guò)擴(kuò)展以增加默認(rèn)實(shí)現(xiàn)的功能

  • 符合協(xié)議以對(duì)某類(lèi)提供標(biāo)準(zhǔn)功能

與結(jié)構(gòu)體相比,類(lèi)還有如下的附加功能:

  • 繼承允許一個(gè)類(lèi)繼承另一個(gè)類(lèi)的特征

  • 類(lèi)型轉(zhuǎn)換允許在運(yùn)行時(shí)檢查和解釋一個(gè)類(lèi)實(shí)例的類(lèi)型

  • 解構(gòu)器允許一個(gè)類(lèi)實(shí)例釋放任何其所被分配的資源

  • 引用計(jì)數(shù)允許對(duì)一個(gè)類(lèi)的多次引用

語(yǔ)法:

Class classname {
   Definition 1
   Definition 2
   ……
   Definition N
}

類(lèi)定義

class student{
   var studname: String
   var mark: Int 
   var mark2: Int 
}

實(shí)例化類(lèi):

let studrecord = student()

實(shí)例

import Cocoa

class MarksStruct {
    var mark: Int
    init(mark: Int) {
        self.mark = mark
    }
}

class studentMarks {
    var mark = 300
}
let marks = studentMarks()
print("成績(jī)?yōu)?nbsp;\(marks.mark)")

以上程序執(zhí)行輸出結(jié)果為:

成績(jī)?yōu)?nbsp;300

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

類(lèi)的屬性可以通過(guò) . 來(lái)訪問(wèn)。格式為:實(shí)例化類(lèi)名.屬性名

import Cocoa

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()
print("Mark1 is \(marks.mark1)")
print("Mark2 is \(marks.mark2)")
print("Mark3 is \(marks.mark3)")

以上程序執(zhí)行輸出結(jié)果為:

Mark1 is 300
Mark2 is 400
Mark3 is 900

恒等運(yùn)算符

因?yàn)轭?lèi)是引用類(lèi)型,有可能有多個(gè)常量和變量在后臺(tái)同時(shí)引用某一個(gè)類(lèi)實(shí)例。

為了能夠判定兩個(gè)常量或者變量是否引用同一個(gè)類(lèi)實(shí)例,Swift 內(nèi)建了兩個(gè)恒等運(yùn)算符:

恒等運(yùn)算符不恒等運(yùn)算符
運(yùn)算符為:===運(yùn)算符為:!==
如果兩個(gè)常量或者變量引用同一個(gè)類(lèi)實(shí)例則返回 true如果兩個(gè)常量或者變量引用不同一個(gè)類(lèi)實(shí)例則返回 true

實(shí)例

import Cocoa

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")

if spClass1 === spClass2 {// false
    print("引用相同的類(lèi)實(shí)例 \(spClass1)")
}

if spClass1 !== spClass2 {// true
    print("引用不相同的類(lèi)實(shí)例 \(spClass2)")
}

以上程序執(zhí)行輸出結(jié)果為:

引用不相同的類(lèi)實(shí)例 SampleClass