Sobes.tech
Junior — Middle

Կարո՞ղ է Swift լեզվում իրականացնել բազմաբաժան ժառանգություն։

sobes.tech AI

Պատասխան AI-ից

Swift լեզվում բազմաբաժան ժառանգություն (multiple inheritance) չի աջակցվում, այսինքն՝ դասը կարող է ժառանգել միայն մեկ սուպեր դասից:

Այնուամենայնիվ, Swift-ը աջակցում է պրոտոկոլներին (protocols), որոնք թույլ են տալիս իրականացնել բազմաբաժան ժառանգության նման ֆունկցիոնալություն՝ մի քանի պրոտոկոլների իրականացման միջոցով:

Օրինակ՝

protocol Flyable {
    func fly()
}

protocol Swimmable {
    func swim()
}

class Animal {
    func eat() {
        print("Սնվում է")
    }
}

class Duck: Animal, Flyable, Swimmable {
    func fly() {
        print("Ուժեղ թռչում է")
    }
    
    func swim() {
        print("Երկար լողում է")
    }
}

let donald = Duck()
donald.eat()  // Սնվում է
donald.fly()  // Ուժեղ թռչում է
donald.swim() // Երկար լողում է

Այսպիսով, ֆունկցիոնալությունը ընդլայնվում է մեկ դասի ժառանգությամբ և մի քանի պրոտոկոլների իրականացմամբ։