Sobes.tech
Junior — Middle

Da li je moguće implementirati statičku dispatch metod unutar klase?

sobes.tech АИ

Одговор од АИ

U jeziku Swift (pretežno za iOS) statička dispatch metoda unutar klase je moguća za metode deklarisane kao static ili final. Takve metode se pozivaju direktno po tipu, bez dinamičkog pretraživanja u tabeli virtuelnih metoda.

Primer:

class MyClass {
    static func staticMethod() {
        print("Statička metoda")
    }
    final func finalMethod() {
        print("Final metoda")
    }
    func dynamicMethod() {
        print("Dinamička metoda")
    }
}

MyClass.staticMethod() // poziv statičke metode

let obj = MyClass()
obj.finalMethod() // poziv finalne metode (statička dispatch)
obj.dynamicMethod() // poziv dinamičke metode (dinamička dispatch)

Dakle, statička dispatch je moguća, ali samo za metode koje ne mogu biti prepisane u podklasama.