Sobes.tech
Junior

Swift тилинде класстар мурас жыйнагы тууралуу айтып бериңиз.

sobes.tech AI

AIден жооп

Swiftте бардык класстар космодогу NSObject негизги класынан автоматтык түрдө мурас алышат, эгер ал так көрсөтүлбөсө да. Бул Swiftти башка тилдерден айырмалап турат, анда бир нече түпкү класстар болушу мүмкүн.

Мурас цепочкасы — бул хиерархияны көрсөтөт, анда ар бир класс өзүнүн ата-энесинен (суперклассынан) касиеттерди жана методдорду мурас алат. Класс бир гана түздөн-түз суперкласска ээ боло алат.

Мисал:

// Негизги класс (жеке `NSObject`тен мурас алат)
class Animal {
    var name: String

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

    func makeSound() {
        print("Белгисиз жаныбар үнү")
    }
}

// Dog классы Animalтен мурас алат
class Dog: Animal {
    let breed: String

    init(name: String, breed: String) {
        self.breed = breed
        super.init(name: name) // Суперкласс инициаторун чакыруу
    }

    override func makeSound() { // Суперкласс методун кайра аныктоо
        print("Гав-гав")
    }
}

// Poodle классы Dogтен мурас алат
class Poodle: Dog {
    var isHypoallergenic: Bool

    init(name: String, breed: String, isHypoallergenic: Bool) {
        self.isHypoallergenic = isHypoallergenic
        super.init(name: name, breed: breed) // Суперкласс инициаторун чакыруу
    }

    // Poodle `makeSound` методун кайра аныктабайт эмес, ал Dogтен мурас алат
}

let myDog = Dog(name: "Buddy", breed: "Labrador")
myDog.makeSound() // Натыйжа: Гав-гав

let myPoodle = Poodle(name: "Lucy", breed: "Miniature Poodle", isHypoallergenic: true)
myPoodle.makeSound() // Натыйжа: Гав-гав — Dogтен мурас алат

Негизги учурлар:

  • Мурас: B: A классы A классынан мурас алат дегенди билдирет.
  • Суперкласс: мурас алган класс. Мисалда AnimalDog үчүн суперкласс, ал эми DogPoodle үчүн суперкласс.
  • Подкласс: башка класстан мурас алган класс. Мисалда DogAnimal подкласс, ал эми PoodleDog подкласс.
  • super: суперкласс методдорун жана инициаторлорун колдонууга мүмкүндүк берет.
  • override: суперкласс методдорун жана касиеттерин кайра аныктоо үчүн колдонулган ачкыч сөз.
  • final: класс, метод же касиетке колдонулуп, анын кайра аныктоосун жана мурас алууну тыюулайт.

Мурас цепочкасы төмөнкүдөй көрүнүштү көрсөтөт:

Класс Кайсы классынан мурас алган makeSound кайра аныкталдыбы?
NSObject - Жок
Animal NSObject Жок
Dog Animal Ооба
Poodle Dog Жок

Мурас цепочкасы кодду кайра колдонууга, атайын версияларды түзүүгө жана маалыматтардын структурасын иерархиялык түрдө уюштурууга мүмкүндүк берет.