Sobes.tech
Junior — Middle

Vai Swift valodā ir iespējams īstenot daudzveidīgu mantošanu?

sobes.tech AI

Atbilde no AI

Swift valodā netiek atbalstīta daudzmantošana (multiple inheritance), tas ir, klase var manto tikai no vienas superklases.

Tomēr Swift atbalsta protokolus (protocols), kas ļauj īstenot funkcionalitāti, kas līdzīga daudzmantošanai, īstenojot vairākus protokolus.

Piemērs:

protocol Flyable {
    func fly()
}

protocol Swimmable {
    func swim()
}

class Animal {
    func eat() {
        print("Ēd")
    }
}

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

let donald = Duck()
donald.eat()  // Ēd
donald.fly()  // Lido
donald.swim() // Peld

Šādā veidā funkcionalitāte tiek paplašināta, izmantojot vienas klases mantošanu un vairākus protokolus.