Swift类中的Static与Class函数和变量:有什么区别?
大家好!我开始学习Swift,遇到了一个我不太理解的主题。在类中,函数和变量可以声明为static,也可以声明为class。这两个关键字似乎工作方式相似:都允许在不创建类实例的情况下调用方法和获取属性。例如:
```swift
class MyClass {
static var staticProperty = "静态属性"
class var classProperty: String {
return "类属性"
}
static func staticMethod() {
print("静态方法")
}
class func classMethod() {
print("类方法")
}
}
MyClass.staticMethod() // 可以工作
MyClass.classMethod() // 也可以工作
```
但我注意到,如果我尝试在子类中重写static方法,Xcode会报错,而class方法可以毫无问题地重写。这是为什么?而且到底应该使用哪一个?有没有什么情况下static更优,什么情况下class更优?请用通俗易懂的方式解释一下。提前谢谢。