Sobes.tech
Junior

Swift dasturlash tilida sinflar merosxo'rlik zanjirini haqida gapiring.

sobes.tech AI

AIdan javob

Swiftda sinflar oddiy merosxo'rlikni qo'llab-quvvatlaydi. Har bir sinf ota sinfdan meros oladi va merosxo'rlik zanjiri asosiy sinfdan boshlanadi, u hech narsa meros olmaydi va pastga qarab bolalar sinflar orqali kengayadi.

Merosxo'rlik xususiyatlari:

  • Yozib olish (Overriding): Bola sinf ota sinf metodlari, xususiyatlari va subskriptlarini yozib olishi mumkin. override kalit so'zi ishlatiladi.
  • Yozib olishni oldini olish (Preventing Overrides): Bir sinf a'zosining yozib olinishini oldini olish uchun uni final kalit so'zi bilan belgilash mumkin. Butun sinfni final deb e'lon qilish mumkin.
  • Ota sinfga kirish: Bola sinf super kalit so'zi yordamida ota sinfning amalga oshirilgan a'zolariga kirish mumkin. Bu ota sinf metodining amalga oshirilishini chaqirish yoki ota sinf xususiyatiga kirish uchun foydalidir.

Misol:

// Asosiy sinf
class Vehicle {
    var currentSpeed = 0.0

    func makeNoise() {
        // Bo'sh amalga oshirish
    }
}

// Vehicle'dan meros olgan bola sinf
class Car: Vehicle {
    var numberOfDoors = 4

    // makeNoise metodini yozib olish
    override func makeNoise() {
        print("Beep beep")
    }
}

// Car'dan meros olgan bola sinf
class ElectricCar: Car {
    var batteryLevel = 100.0

    // Yangi xususiyat qo'shish
    let isElectric = true

    // Asosiy sinfdan xususiyatni yozib olish
    override internal var currentSpeed: Double {
        didSet {
            if currentSpeed > 0 {
                print("Elektr avtomobil harakatda")
            }
        }
    }
}

Ushbu misolda:

  • Vehicle — asosiy sinf.
  • Car Vehicle dan meros oladi. U numberOfDoors xususiyatini qo'shadi va makeNoise metodini yozib oladi.
  • ElectricCar Car dan meros oladi. U batteryLevel xususiyatini qo'shadi, isElectric konstantini va currentSpeed xususiyatini yozib oladi.

Meros zanjiri: Vehicle -> Car -> ElectricCar. Bu zanjirdagi har bir sinf, yuqori qatlamdagi sinflarning barcha ochiq (yoki boshqa kontekstda kirish mumkin bo'lgan) a'zolariga kirish huquqiga ega.