Avatar ·

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 que pertencem ao próprio tipo, e não à sua instância. Usando a palavra-chave `static` antes de `func`, posso chamar o método sem criar um objeto. Mas também vi que é possível usar `class func` para os mesmos fins. Por exemplo: ```swift struct MyStruct { static func sayHello() { print("Olá de static!") } } class MyClass { class func sayHello() { print("Olá de class!") } } ``` Ambas as chamadas funcionam: `MyStruct.sayHello()` e `MyClass.sayHello()`. Qual é a diferença fundamental entre elas? Por que não posso usar apenas `static` em todos os lugares? E existem algumas limitações quanto ao uso de `static` em classes? Ficarei grato por uma explicação detalhada com exemplos, especialmente sobre herança, pois ouvi dizer que este é o ponto chave. <<>>

Métodos estáticos e métodos de classe: a diferença chave está na herança

A diferença entre static fu