Sobes.tech
Junior — Middle

Ar įmanoma Swift kalboje įgyvendinti daugiavaldystę?

sobes.tech AI

Atsakymas iš AI

Swift kalboje nėra palaikomas daugiavaikis paveldėjimas, tai yra, klasė gali paveldėti tik iš vieno tėvinės klasės.

Tačiau Swift palaiko protokolus (protocols), kurie leidžia įgyvendinti funkcionalumą, panašų į daugiavaikį paveldėjimą, įgyvendinant kelis protokolus.

Pavyzdys:

protocol Flyable {
    func fly()
}

protocol Swimmable {
    func swim()
}

class Animal {
    func eat() {
        print("Valgo")
    }
}

class Duck: Animal, Flyable, Swimmable {
    func fly() {
        print("Skraido")
    }
    
    func swim() {
        print("Plaukia")
    }
}

let donald = Duck()
donald.eat()  // Valgo
donald.fly()  // Skraido
donald.swim() // Plaukia

Šiuo būdu funkcionalumas plečiasi naudojant vienos klasės paveldėjimą ir kelių protokolų įgyvendinimą.