Sobes.tech
Junior — Middle

Je možné implementovať statickú dispatch metódu v rámci triedy?

sobes.tech AI

Odpoveď od AI

V jazyku Swift (predovšetkým pre iOS) je statická dispatch metód v rámci triedy možná pre metódy deklarované ako static alebo final. Takéto metódy sa volajú priamo podľa typu, bez dynamického vyhľadávania v tabuľke virtuálnych metód.

Príklad:

class MyClass {
    static func staticMethod() {
        print("Statická metóda")
    }
    final func finalMethod() {
        print("Finálna metóda")
    }
    func dynamicMethod() {
        print("Dynamická metóda")
    }
}

MyClass.staticMethod() // volanie statickej metódy

let obj = MyClass()
obj.finalMethod() // volanie finálnej metódy (statická dispatch)
obj.dynamicMethod() // volanie dynamickej metódy (dynamická dispatch)

Teda, statická dispatch je možná, ale iba pre metódy, ktoré nemôžu byť prepísané v podtriedach.