Swift

Swift 中的 static 和 class 关键字

2020-03-18  本文已影响0人  雪碧童鞋

static 和 class

在 Swift 中 Staticclass 都是表示「类型范围作用域」的关键字。

在所有类型(class、struct、enum )中使用 static 修饰都可以表示类方法类与属性(包括存储属性和计算属性)。

class 是专门用在 calss 类型中修饰类方法和类的计算属性(注意:无法使用 class 修饰存储属性)。

在 class 类型中 static 和 class 的区别

在 class 类型中 staticclass 都可以表示类型范围作用域,那区别是什么?

  1. class 无法修饰存储属性,而 static 可以。
  2. 使用 static 修饰的类方法和类属性无法在子类中重载。也就是说 static 修饰的类方法和类属性包含了 final 关键字的特性。相当于 final class

static 在 Protocol 中的使用

Swift 中 class,struct,enum 都可以实现某个指定 protocol。在 protocol定义一个类方法或者类计算属性,显而易见,应该使用 static 关键字来修饰。使用 protocol 时,在 struct 和 enum 中仍然使用 static,在 class 类型中 classstatic 关键字都可以使用。

附:计算属性和存储属性区别

计算型属性

var userName: String?
var nanme: String {
    get {
        return "miFanTongXie"
     }
//set里面不能自己给自己赋值,否则会导致死循环
     set {
         userName = newValue
     }
}

存储型属性

上一篇 下一篇

猜你喜欢

热点阅读