swift3-15 类

:Swift 类是构建代码所用的一种通用且灵活的结构体。我们可以为类定义属性和方法。 与其他编程语言不同的是,Swift 并不要求你为自定义的类去创建独立的接口和实现文件, 你要做的是在一个单一文件中定义一个类,系统会自动生产面向其他代码的外部接口。

//示例:
class Person{
    var firstName:String = ""
    var lastName:String = ""
}

class Person1{
    var firstName:String
    var lastName:String
    init(firstName:String, lastName:String) {
        self.firstName = firstName
        self.lastName = lastName
    }
}
let person1 = Person1.init(firstName: "Bobo", lastName: "Stream")

类和结构体的对比
共同点:

比结构体多了如下功能

区别:引用类型和值类型

//示例:
class Person{
   var firstName:String = ""
   var lastName:String = ""
}

let person1 = Person(firstName: "Bobo", lastName: "Stream")
let person2 = person1
person2.firstName = "abc"
person1.firstName  // "abc"  person1 和 person2 是引用关系 指向同一个内存空间
let person3 = Person(firstName: "abc", lastName: "Stream")

struct Location{
    var latitude:Double
    var longitude:Double
}

var aLocation = Location.init(latitude: 2.0, longitude: 3.0)
var blocation = aLocation
blocation.latitude = 1.0
aLocation.latitude    // 2.0  aLocation 和 bloaction 是值类型关系,赋值是拷贝,产生一个新的副本

恒等运算符 因为类是引用类型,有可能有多个常量和变量在后台同时引用某一个类实例. 为了能够判定两个常量或者变量是否引用同一个类实例,Swift 内建了两个恒等运算符:

===: 如果两个常量或者变量引用同一个类实例则返回 true
!==: 如果两个常量或者变量引用不同一个类实例则返回 true

 person1 === person2   //true
 person1 === person3   //false