十三.类型属性和类型方法
1. 通过前面的学习,已经知道Swift的类型中有5种成员:属性(存储属性和计算属性)、方法、下标、构造器和嵌套类型。而且属性和方法都可以分为两种:实例的属性/方法和 类型的属性/方法
2. 值类型的属性:值类型包括枚举和结构体两种。值类型的属性用static关键字关键字修饰。--不管是存储属性还是计算属性。
3. 枚举可以包含类型属性。包括类型存储属性和类型计算属性。 注意:枚举只能包含实例的计算属性,不能包含实例存储属性。
4. 结构体可以包含类型属性,包括类型存储属性和类型计算属性 ---- 结构体也可以包含实例计算属性和实例存储属性
5. 类的类型属性用class修饰,类里面不允许定义类型存储属性,类只能包含类型计算属性。
6. Swift不允许在类中定义类型存储属性,有些时候程序确实需要在类中保存类型相关的状态,但Swift不允许通过类型存储属性来实现(可以通过全局变量来实现)。这个设计非常奇怪,可能是为了和Objective-C兼容的结果
7. 值类型的方法:使用static修饰,属于类型本身。
8. 类型方法不能直接访问实例成员,如果希望在类型方法中访问实例成员,必须先创建该类型的实例,然后通过实例调用成员。
9. 类型方法可以直接访问类型成员,如果类型方法中包含了与类型属性命名相同的局部变量,此时局部变量将会隐藏类型属性,程序可以通过self强制访问类型属性。
10. 类的类型方法也使用关键字class修饰。
11. 类型方法可以直接方法类中的类型成员,也可以通过self明确指定访问类中的类型成员。