Sobes.tech
Junior — Middle

Чӣ гуна дар забони Swift имконпазирии меросгирии чандкаратаи синфҳо ё протоколҳо ба даст меояд?

sobes.tech AI

Ҷавоб аз AI

Дар Swift, класа метавонад танҳо аз як суперкласа мерос барад, яъне, мероси бисёрҷонибаи клаасҳо дастгирӣ намешавад. Аммо, барои ба даст овардани таъсири монанд, мерос аз як класа ва иҷрои чанд протокол истифода мешавад. Протоколҳо дар Swift маҷмӯи талаботҳоро (усулҳо, хосиятҳо) муайян мекунанд, ки класа, структура ё enumeration бояд иҷро кунад. Ба ин тариқ, класа метавонад рафторро аз суперкласа мерос барад ва ҳамзамон ба чанд протокол мувофиқат кунад, ки имкон медиҳад, ки функсионалиятро омезиш диҳад.

Масалан:

protocol Drivable {
    func drive()
}

protocol Flyable {
    func fly()
}

class Vehicle {
    func start() {
        print("Вазорат оғоз шуд")
    }
}

class FlyingCar: Vehicle, Drivable, Flyable {
    func drive() {
        print("Рондан дар роҳ")
    }
    
    func fly() {
        print("Парвоз дар осмон")
    }
}

let myFlyingCar = FlyingCar()
myFlyingCar.start()  // Вазорат оғоз шуд
myFlyingCar.drive()  // Рондан дар роҳ
myFlyingCar.fly()    // Парвоз дар осмон

Бинобар ин, мероси бисёрҷониба тавассути мерос аз як класа ва иҷрои чанд протокол ба даст меояд.