一、static定义类型属性 全局中只有一份 10
struct Car {static var count: Int = 0 init() {Car.count += 1}}
1.1 从内存布局分析count 是全局变量
1.2 分析static var count: Int = 0 他只初始化了一次和他是线程安全的
二、方法
2.1 mutating
结构体和枚举是值类型,默认情况下,值类型的属性不能被自身的实例方法修改
要修改的自己的实例属性需要添加mutating
三、@discardableResult
四、下标( subscript)他是实例方法和类方法
4.1 下标的细节
4.2 结构体、类作为返回值对比
4.2.1 结构体 是值类型的,传递出来的是值1.00
要修改需要下边这样写才行
set { point = newValue }
4.2.2 类 是引用类型的,传递出来的引用的地址,外边可以修改
4.3 接收多个参数的下标
五、继承(Inheritance)
5.1 内存结构
5.2、 重写实例方法、下标 1.12
多态父类类型指向子类类型
5.3 重写类型方法、下标
static 不允许重写
class 可以重写
5.4 重写属性 1.25
重写上面的存储属性和计算属性
在下边的set 里面super.radius 的访问改为radius 产生死循环
5.5 重写类型属性
5.6 属性观察器 1.51
为计算属性增加属性观察器,以前在一个calss 计算属性和观察器不能共存,这里继承就可以了
5.7 final
六、多态的实现原理 2.00
父类指针指向子类对象