Swift教程 - Swift类

由 babyfiyme 创建, 最后一次修改 2017-01-10

Swift教程 - Swift类

我们可以使用类在Swift中定义类型。

类为我们提供了一种将相关信息和行为组合在一起的方法。

要定义一个Swift类,使用 class 关键字。

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 类由一个人姓名的字符串组成一个人的年龄的整数。

这些变量和常量类型称为属性。



类实例(对象)

要使用 Person 实例,请根据此定义创建一个新实例。

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中,对象通常是对结构和类的实例的引用。



访问类属性

对于类实例属性,您使用点语法。

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

在上面的代码中,我们使用点语法来更改变量值。

类是引用类型。

使用赋值运算符时,只分配对实例的引用。

当更改类实例成员时,它们将反映在实例无处不在的程序。

类和结构实例

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

类与结构和参考与复制

引用和复制实例之间的主要区别发生在使用赋值运算符 = 来引用实例时。

对于结构,在分配期间将获取实例的副本。此副本独立于原始实例操作。更改副本不会反映在原始实例中。

将变量分配给类实例会对类实例成员进行更改,原来的实例内容也会改变。

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

上面的代码生成以下结果。

从输出我们可以看到原始结构成员不会改变原始类的实例成员的值更改为与值相同 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

上面的代码生成以下结果。

b1是真的,因为它们都是相同的实例,b2为假。

类不等式身份运算符

类实例不等式身份操作符!== 测试看是否两个实例不指向同一实例。

var b7 = p1 !== p1 //returns false
以上内容是否对您有帮助:
二维码
建议反馈
二维码