Swift 中的 static 和 class 关键字

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 关键字都可以使用。

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

计算型属性

  • 执行函数返回其他内存地址
  • 计算型属性本身不占用内存空间
  • 计算属性可以用于类、结构和枚举里
  • 不直接存储值,而是用get/set来做.可用来操作其他属性值的变化
var userName: String?
var nanme: String {
    get {
        return "miFanTongXie"
     }
//set里面不能自己给自己赋值,否则会导致死循环
     set {
         userName = newValue
     }
}

存储型属性

  • 需要开辟空间,以存储数据
  • 存储属性只能用于类和结构体里
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容