¿Cuál es la diferencia entre static func y class func en Swift?
¡Hola! Empecé a estudiar Swift y me encontré con dos formas similares de declarar métodos: `static func` y `class func`. Parece que ambos permiten llamar al método a nivel de tipo, no en una instancia, pero no entiendo cuál es la diferencia fundamental.
Por ejemplo, puedo escribir:
```swift
class MyClass {
static func staticMethod() {
print("Este es un método estático")
}
class func classMethod() {
print("Este es un método de clase")
}
}
```
Y llamarlos de la misma manera: `MyClass.staticMethod()` y `MyClass.classMethod()`. El resultado es el mismo: se imprimen las líneas. Entonces, ¿por qué dos palabras clave diferentes?
Intenté crear una subclase y sobrescribir el método, pero el compilador se queja si intento sobrescribir `static func`. Mientras que `class func` parece permitir la sobrescritura. ¿Es esta la única diferencia? ¿O hay otros matices? ¿Quizás la diferencia está en el rendimiento o en cómo se almacenan en la memoria?
Explíquenme, por favor, en detalle para qué sirve cada uno.
No answers yet.
Inicia sesión para dejar una respuesta