Sobes.tech
Junior — Middle

Lehet-e statikus metódus-elosztást megvalósítani egy osztályon belül?

sobes.tech MI

Válasz az MI-től

Swift nyelven (főként iOS-re) osztályon belüli metódusok statikus diszpécserése lehetséges azoknál a metódusoknál, amelyeket static vagy final-ként deklaráltak. Ezek a metódusok közvetlenül típus szerint hívhatók, anélkül, hogy dinamikus keresést végeznének a virtuális metódus táblában.

Példa:

class MyClass {
    static func staticMethod() {
        print("Statikus metódus")
    }
    final func finalMethod() {
        print("Végső metódus")
    }
    func dynamicMethod() {
        print("Dinamikus metódus")
    }
}

MyClass.staticMethod() // statikus metódus hívása

let obj = MyClass()
obj.finalMethod() // végső metódus hívása (statikus diszpécser)
obj.dynamicMethod() // dinamikus metódus hívása (dinamikus diszpécser)

Tehát, a statikus diszpécserés lehetséges, de csak olyan metódusoknál, amelyeket nem lehet felülírni az alosztályokban.