Sobes.tech
Junior

Swift tilida sinflar meroslik zanjirini haqida gapiring.

sobes.tech AI

AIdan javob

Swiftda barcha sinflar, aniq ko'rsatilmagan taqdirda ham, avtomatik tarzda NSObject asosiy sinfidan meros oladi. Bu Swiftni ba'zi boshqa tillardan ajratib turadi, chunki ularning ba'zilarida bir nechta ildiz sinf bo'lishi mumkin.

Meros zanjiri, har bir sinf o'z ota-sinfidan (superklass) xususiyatlar va metodlarni meros qilib oladigan hierarxiyani ifodalaydi. Bir sinf faqat bitta to'g'ridan-to'g'ri superklassga ega bo'lishi mumkin.

Misol:

// Asosiy sinf (avtomatik ravishda NSObjectdan meros oladi)
class Animal {
    var name: String

    init(name: String) {
        self.name = name
    }

    func makeSound() {
        print("Noma'lum hayvon tovushi")
    }
}

// Dog sinfi Animaldan meros oladi
class Dog: Animal {
    let breed: String

    init(name: String, breed: String) {
        self.breed = breed
        super.init(name: name) // Superklassning initsializatorini chaqirish
    }

    override func makeSound() { // Superklass metodini qayta yozish
        print("Gav-gav")
    }
}

// Poodle sinfi Dogdan meros oladi
class Poodle: Dog {
    var isHypoallergenic: Bool

    init(name: String, breed: String, isHypoallergenic: Bool) {
        self.isHypoallergenic = isHypoallergenic
        super.init(name: name, breed: breed) // Superklassning initsializatorini chaqirish
    }

    // Poodle makeSound metodini qayta yozmaydi, Dogdan meros oladi
}

let myDog = Dog(name: "Buddy", breed: "Labrador")
myDog.makeSound() // Chiqish: Gav-gav

let myPoodle = Poodle(name: "Lucy", breed: "Miniature Poodle", isHypoallergenic: true)
myPoodle.makeSound() // Chiqish: Gav-gav - Dogdan meros

Asosiy nuqtalar:

  • Meros: B: A sinfi, B sinfi A sinfidan meros olishini anglatadi.
  • Superklass: Meros olinadigan sinf. Misolda, Animal Dog uchun superklass, Dog esa Poodle uchun superklass.
  • Subklass: Boshqa sinfdan meros oladigan sinf. Misolda, Dog Animal ning subklassidir, Poodle esa Dog ning subklassidir.
  • super: Superklass metodlari yoki initsializatorlariga kirish uchun ishlatiladi.
  • override: Subklassda, superklass metodlari yoki xususiyatlarini qayta yozish uchun kalit so'z.
  • final: Sinf, metod yoki xususiyatga qo'llanadigan modifikator bo'lib, uning qayta yozilishi yoki meros olinishi taqiqlanadi.

Misoldagi meros zanjirini ko'rsatadigan jadval:

Sinf Qaysi sinfdan meros oladi makeSoundni qayta yozadimi?
NSObject - Yo'q
Animal NSObject Yo'q
Dog Animal Ha
Poodle Dog Yo'q

Meros zanjiri kodni qayta ishlatish, sinflarning maxsus versiyalarini yaratish va ma'lumotlar tuzilmasini hierarxik tarzda tashkil qilish imkonini beradi.