Sobes.tech
Junior — Middle

Swift тилинде көптөгөн класстар же протоколдордон мурас алуу кантип жеткиликтүү болот?

sobes.tech AI

AIден жооп

Swiftте, класс тек бир эле суперклассынан мурас алса болот, башкача айтканда, классдардын көп мурас алушу колдоо көрбөйт. Бирок, окшош эффектке жетүү үчүн, бир класс мурас алынып, бир нече протоколду ишке ашыруу колдонулат. Swiftтеги протоколдор, класс, структура же энумерация ишке ашырышы керек болгон талаптардын (методдор, мүнөздөмөлөр) топтомун аныктайт. Ошентип, класс суперкласстын жүрүм-турумун мурас алса жана бир эле учурда бир нече протоколго ылайык келсе, бул функцияларды бириктирүүгө мүмкүндүк берет.

Мисал:

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()    // Асманга учуу

Ушул жол менен, көп мурас алуу бир класс мурас алуу жана бир нече протоколду ишке ашыруу аркылуу жеткирилет.