1.类和结构体的语法定义
//类的定义
class Person {
//声明属性 : 必须赋予初始值
var name = ""
var age : Int = 1
//在类里面声明一个结构体类型的属性:结构体的对象必须初始化
var frame : Frame = Frame.init()
}
//结构体的定义
struct Frame {
//声明属性
var point : Int = 1
var rect : Int = 1
}
2.类和结构体实例
//类的实例化
var person1 = Person.init()
//结构体的实例化
var frame = Frame.init()
3.访问属性
//类访问属性
person1.name = "wo"
//结构体访问属性
frame.point = 3
4.类和结构体的 混合应用
person1.frame.point = 44
5.结构体类型的成员 逐一构造器(类不存在逐一构造器)
let frame2 = Frame.init()
let frame3 = Frame.init(point: 1, rect: 2) //能够给所有的属性赋值
let person2 = Person.init() //类不存在逐一构造器
6.结构体 是值类型
//值类型特点: 当用一个值类型的对象给另一个对象赋值时,系统执行的是 拷贝 操作
var frame4 = Frame.init(point: 10, rect: 30)
var frame5 = frame4 //赋值 copy操作
frame4.point = 300
frame5.point = 400
print(frame4.point , frame5.point) // 300 400
7.类 是引用类型
//引用类型的特点: 当用一个 引用类型的对象给另一个对象赋值时,系统只是做了指针改变指向的改变,内存中没有拷贝
var person3 = Person.init()
person3.age = 100
var person4 = person3 //这两个对象 的 指向相同,没有拷贝操作
print(person3.age , person4.age) // 100
8.恒等运算符 === (3个等号)
//只能判断两个类创建的对象是否相同(比较的是内存地址)
if person3 === person4{
print("相同")
}else{
print("不同")
}