Swift教程 - Swift類

2018-01-10 21:33 更新

Swift教程 - Swift類

我們可以使用類在Swift中定義類型。

類為我們提供了一種將相關(guān)信息和行為組合在一起的方法。

要定義一個Swift類,使用 class 關(guān)鍵字。

class Person {
    var name: String = "Name"
    var age:Int = 0

    func profile() -> String {
       return "I"m \(self.name) and I"m \(self.age) years old."
    }

}

在上面的代碼中,我們定義了一個名為 Person 的類。

Person 類由一個人姓名的字符串組成一個人的年齡的整數(shù)。

這些變量和常量類型稱為屬性。



類實例(對象)

要使用 Person 實例,請根據(jù)此定義創(chuàng)建一個新實例。

class Person {
    var name: String = "Name"
    var age:Int = 0

    func profile() -> String {
       return "I"m \(self.name) and I"m \(self.age) years old."
    }
}
var p = Person()

在Swift中,對象通常是對結(jié)構(gòu)和類的實例的引用。



訪問類屬性

對于類實例屬性,您使用點語法。

p.name = "Tom"
p.age = 40

在上面的代碼中,我們使用點語法來更改變量值。

類是引用類型。

使用賦值運算符時,只分配對實例的引用。

當更改類實例成員時,它們將反映在實例無處不在的程序。

類和結(jié)構(gòu)實例

struct S {
    var i = 1
}

class C {
    var i = 1
}

var s = S()

var c = C()

println("s.i = \(s.i)")
println("c.i = \(c.i)")

清單32-2中的語句將打印:

s.i = 1
c.i = 1

類與結(jié)構(gòu)和參考與復(fù)制

引用和復(fù)制實例之間的主要區(qū)別發(fā)生在使用賦值運算符 = 來引用實例時。

對于結(jié)構(gòu),在分配期間將獲取實例的副本。此副本獨立于原始實例操作。更改副本不會反映在原始實例中。

將變量分配給類實例會對類實例成員進行更改,原來的實例內(nèi)容也會改變。

struct S {
    var i = 1
}

class C {
    var i = 1
}

var s2 = s
var c2 = c
s2.i = 2
c2.i = 2
println("s.i = \(s.i)")
println("c.i = \(c.i)")

上面的代碼生成以下結(jié)果。

從輸出我們可以看到原始結(jié)構(gòu)成員不會改變原始類的實例成員的值更改為與值相同 c2 上的 i 屬性。

類身份操作符

類相等運算符===比較兩個類實例。

如果實例變量都指向同一個實例,此運算符將返回true。

class Person {
    var name: String = "Name"
    var age:Int = 0

    func profile() -> String {
        return "I"m \(self.name) and I"m \(self.age) years old."
    }

}
var p1 = Person()
p1.name = "A"
p1.age = 40

var p2 = Person()
p2.name = "B"
p2.age = 25

var b1 = p2 === p2
var b2 = p1 === p2

上面的代碼生成以下結(jié)果。

b1是真的,因為它們都是相同的實例,b2為假。

類不等式身份運算符

類實例不等式身份操作符!== 測試看是否兩個實例不指向同一實例。

var b7 = p1 !== p1 //returns false
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號