搜索
您的当前位置:首页正文

Swift中class和static用来修饰 属性/方法 时的区

来源:知库网

相同点

  1. 可以修饰方法,static 修饰的方法叫做静态方法,class 修饰的叫做类方法。
  2. 都可以修饰计算属性。

不同点

  1. class 不能修饰存储属性。
  2. class 修饰的计算属性可以被重写,static 修饰的不能被重写。
  3. static 可以修饰存储属性,static 修饰的存储属性称为静态变量(常量)。
  4. static 修饰的静态方法不能被重写,class 修饰的类方法可以被重写。
  5. class 修饰的类方法被重写时,可以使用static 让方法变为静态方法。
  6. class 修饰的计算属性被重写时,可以使用static 让其变为静态属性,但它的子类就不能被重写了。
  7. class 只能在类中使用,但是static 可以在类,结构体,或者枚举中使用。
  8. 有一个比较特殊的是protocol。在Swift中class、struct和enum都是可以实现protocol的。那么如果我们想在protocol里定义一个类型域上的方法或者计算属性的话,应该用哪个关键字呢?答案是使用class进行定义,但是在实现时还是按照规则:在class里使用class关键字,而在struct或enum中仍然使用static,虽然在protocol中定义时使用的是class。
Top