类属性

实例属性属于一个特定类型的实例;类属性属于整个类型,在多个该类型的实例间共享。

类属性既可以定义为存储属性也可以定义为计算属性

存储的类属性必须在定义时提供初始化器。但是类型属性在首次访问时才初始化,同时类型属性的初始化是线程安全的。

定义类属性

使用关键字 static 来定义类型属性。在为类定义计算型类型属性时,可以改用关键字 class 来支持子类对父类的实现进行重写.

类,结构体和枚举都可以定义存储型类属性

class SomeStructure {
    static var storedTypeProperty = "Some value."
    class var computedTypeProperty: Int {
        return 1
    }
}
enum SomeEnumeration {
    static var storedTypeProperty = "Some value."
    static var computedTypeProperty: Int {
        return 6
    }
}
class SomeClass : SomeStructure{
    class override var computedTypeProperty: Int {
        return 107
    }
}

类型属性可以被子类继承,子类不可以定义与父类中名字相同的类型属性。 当使用class定义的类型计算属性,可以被子类重写。

2. 类型属性可以定义属性观察器

最后更新于