Swift
属性
分类:
存储属性 (好比面包,直接拿来吃)
运用场景: 类,结构体
问?为什么枚举类型不能有存储属性
修饰符: var 和 let
计算属性 (有个做面包的师傅,每次新做面包)
运用场景: 类,结构体 和 枚举关联
只能用var 修改,因为它一直变
struct SomeStructure {
var computedTypeProperty: Int {
return 1
}
}
类型属性 (好比世间唯一的一块82年面包,所有类型实例共享)
运用场景: 类,结构体 和 枚举关联
必须声明时就初始化,因为类型没有构造方法
struct SomeStructure {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 1
}
}
enum SomeEnumeration {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 6
}
}
class SomeClass {
static var storedTypeProperty = "Some value."
static var computedTypeProperty: Int {
return 27
}
class var overrideableComputedTypeProperty: Int {
return 107
}
}
使用关键字 static 来定义类型属性。在为类定义计算型类型属性时,可以改用关键字 class 来支持子类对父类的实现进行重写。
class FatherClass {
static var storedTypeProperty = "Some value."
class var computedTypeProperty: Int { //这里的class 是为了子类能重写
return 27
}
}
class SomeClass:FatherClass {
class override var computedTypeProperty: Int { //class 可以换成 static
return 107
}
}
SomeClass.computedTypeProperty
//107
\