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