Qual é a diferença entre static func e class func em Swift?
Olá! Comecei a estudar Swift e me deparei com duas formas semelhantes de declarar métodos: `static func` e `class func`. Ambos parecem permitir chamar o método no nível do tipo, não na instância, mas não entendo qual é a diferença fundamental.
Por exemplo, posso escrever:
```swift
class MyClass {
static func staticMethod() {
print("Este é um método estático")
}
class func classMethod() {
print("Este é um método de classe")
}
}
```
E chamá-los da mesma forma: `MyClass.staticMethod()` e `MyClass.classMethod()`. O resultado é o mesmo – as strings são impressas. Então por que duas palavras-chave diferentes?
Tentei criar uma subclass e sobrescrever o método, mas o compilador reclama se tento sobrescrever `static func`. Já `class func` parece permitir sobrescrita. Essa é a única diferença? Ou existem outras nuances? Talvez diferença de performance ou como são armazenadas na memória?
Explique, por favor, detalhadamente para que serve cada uma.