Sobes.tech
Junior — Middle

É possível implementar a despachagem estática de métodos dentro de uma classe?

sobes.tech IA

Resposta da IA

Na linguagem Swift (principalmente para iOS), a despacho estático de métodos dentro de uma classe é possível para métodos declarados como static ou final. Esses métodos são chamados diretamente pelo tipo, sem busca dinâmica na tabela de métodos virtuais.

Exemplo:

class MyClass {
    static func staticMethod() {
        print("Método estático")
    }
    final func finalMethod() {
        print("Método final")
    }
    func dynamicMethod() {
        print("Método dinâmico")
    }
}

MyClass.staticMethod() // chamada do método estático

let obj = MyClass()
obj.finalMethod() // chamada do método final (despacho estático)
obj.dynamicMethod() // chamada do método dinâmico (despacho dinâmico)

Portanto, a despacho estático é possível, mas apenas para métodos que não podem ser sobrescritos em subclasses.