Swift中static func和class func的区别是什么?
你好!我开始学习Swift,遇到了两种类似的声明方法的方式:`static func`和`class func`。似乎两者都允许在类型级别而不是实例上调用方法,但我不明白根本区别在哪里。
例如,我可以这样写:
```swift
class MyClass {
static func staticMethod() {
print("这是静态方法")
}
class func classMethod() {
print("这是类方法")
}
}
```
并且调用它们的方式相同:`MyClass.staticMethod()`和`MyClass.classMethod()`。结果是一样的——打印出字符串。那为什么需要两个不同的关键字呢?
我尝试创建子类并重写方法,但当我尝试重写`static func`时,编译器会报错。而`class func`似乎允许重写。这是唯一的区别吗?还是还有其他细微差别?也许是在性能上或它们在内存中的存储方式上有区别?
请详细解释一下,每个关键字的作用是什么。