Quelle est la différence entre static func et class func en Swift ?
Bonjour ! J'ai commencé à apprendre Swift et je suis tombé sur deux façons similaires de déclarer des méthodes : `static func` et `class func`. Apparemment, les deux permettent d'appeler une méthode au niveau du type, et non sur une instance, mais je ne comprends pas la différence fondamentale.
Par exemple, je peux écrire :
```swift
class MyClass {
static func staticMethod() {
print("C'est une méthode statique")
}
class func classMethod() {
print("C'est une méthode de classe")
}
}
```
Et les appeler de la même manière : `MyClass.staticMethod()` et `MyClass.classMethod()`. Le résultat est le même – les chaînes sont imprimées. Pourquoi alors deux mots-clés différents ?
J'ai essayé de créer une sous-classe et de redéfinir la méthode, mais le compilateur se plaint si j'essaie de redéfinir `static func`. Alors que `class func` semble permettre la redéfinition. Est-ce la seule différence ? Ou y a-t-il d'autres subtilités ? Peut-être une différence de performance ou dans la façon dont elles sont stockées en mémoire ?
Expliquez-moi, s'il vous plaît, en détail, à quoi sert chacun.