static 和 class
在 Swift 中 Static
和 class
都是表示「类型范围作用域」的关键字。
在所有类型(class、struct、enum )中使用 static
修饰都可以表示类方法类与属性(包括存储属性和计算属性)。
class
是专门用在 calss 类型中修饰类方法和类的计算属性(注意:无法使用 class
修饰存储属性)。
在 class 类型中 static 和 class 的区别
在 class 类型中 static
和 class
都可以表示类型范围作用域,那区别是什么?
-
class
无法修饰存储属性,而static
可以。 - 使用
static
修饰的类方法和类属性无法在子类中重载。也就是说static
修饰的类方法和类属性包含了final
关键字的特性。相当于final class
。
static 在 Protocol 中的使用
Swift 中 class,struct,enum 都可以实现某个指定 protocol。在 protocol定义一个类方法或者类计算属性,显而易见,应该使用 static
关键字来修饰。使用 protocol 时,在 struct 和 enum 中仍然使用 static
,在 class 类型中 class
和 static
关键字都可以使用。
附:计算属性和存储属性区别
计算型属性
- 执行函数返回其他内存地址
- 计算型属性本身不占用内存空间
- 计算属性可以用于类、结构和枚举里
- 不直接存储值,而是用
get/set
来做.可用来操作其他属性值的变化
var userName: String?
var nanme: String {
get {
return "miFanTongXie"
}
//set里面不能自己给自己赋值,否则会导致死循环
set {
userName = newValue
}
}
存储型属性
- 需要开辟空间,以存储数据
- 存储属性只能用于类和结构体里
网友评论