Sobes.tech
Junior

Խոսեք Swift ծրագրավորման լեզվում դասերի ժառանգության շղթայի մասին։

sobes.tech AI

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

Swift դասերը միակ ժառանգություն են ապահովում: Յուրաքանչյուր դաս ժառանգում է մեկ ծնողական դասից, ձևավորելով հորիզոնական շղթա: Ժառանգության շղթան սկսվում է հիմնական դասից, որը ոչ մի բանից չի ժառանգում, և հասնում է ներքև՝ դուստր դասերի միջոցով:

Ժառանգության հատկություններ:

  • Ավտոմատ վերագրում (Overriding): Դուստր դասը կարող է վերագրել ծնողական դասի մեթոդների, հատկությունների և սաբսկրիպտների իրականացմանը: Օգտագործվում է override բանալի բառը:
  • Վերագրումների արգելք (Preventing Overrides): Կարող եք կանխել անդամի վերագրումը՝ նշելով այն final բանալի բառով: Բոլոր դասը կարող է հայտարարվել որպես final:
  • Ծնող դասին հասանելիություն: Դուստր դասը կարող է հասանելի լինել ծնողական դասի իրականացված անդամներին super բանալի բառի միջոցով: Սա օգտակար է ծնողական մեթոդի իրականացման կանչելու կամ ծնողական հատկությանը հասնելու համար:

Օրինակ:

// Հիմնական դաս
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Դատարկ իրականացում
    }
}

// Դուստր դաս, որը ժառանգում է Vehicle-ից
class Car: Vehicle {
    var numberOfDoors = 4

    // Վերագրում `makeNoise` մեթոդը
    override func makeNoise() {
        print("Beep beep")
    }
}

// Դուստր դաս, որը ժառանգում է Car-ից
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Նոր հատկություն ավելացնել
    let isElectric = true

    // Վերագրում `currentSpeed` հատկությունը
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Էլեկտրական մեքենան շարժվում է")
            }
        }
    }
}

Այս օրինակով՝

  • Vehicle — հիմնական դաս:
  • Car ժառանգում է Vehicle-ից, ավելացնում է numberOfDoors հատկությունը և վերագրում makeNoise մեթոդը:
  • ElectricCar ժառանգում է Car-ից, ավելացնում է batteryLevel հատկությունը, isElectric կոնստանտը և վերագրում currentSpeed հատկությունը:

Ժառանգության շղթա՝ Vehicle -> Car -> ElectricCar: Յուրաքանչյուր դաս հասանելի է բոլոր բաց (կամ այլ կոնտեքստում հասանելի) անդամներին վերևի դասերից: