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.