Sobes.tech
Junior

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

sobes.tech AI

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

Վ Swift բոլոր դասերը անպայման ժառանգում են հիմնական NSObject դասից, նույնիսկ եթե դա բացահայտորեն նշված չէ: Սա տարբերակում է Swift-ը մի շարք այլ լեզուներից, որտեղ կարող է լինել մի քանի հիմնական դաս:

Ժառանգության շղթան ներկայացնում է հիերարխիա, որտեղ յուրաքանչյուր դաս ժառանգում է հատկություններ և մեթոդներ իր ծնողական դասից (superclass): Դասը կարող է ունենալ միայն մեկ անմիջական superclass:

Օրինակ՝

// Հիմնական դաս (անպայման ժառանգում է 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) // Կոչում է superclass-ի ինիցիալիզատորը
    }

    override func makeSound() { // Պատճենում է superclass-ի մեթոդը
        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) // Կոչում է superclass-ի ինիցիալիզատորը
    }

    // 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 դասը նշանակում է, որ B դասը ժառանգում է A դասից:
  • SuperClass: Դասը, որից ժառանգում է։ Օրինակ՝ AnimalDog-ի superClass է, իսկ DogPoodle-ի superClass:
  • SubClass: Դասը, որից ժառանգում է։ Օրինակ՝ DogAnimal-ի subClass է, իսկ PoodleDog-ի subClass:
  • super: Օգտագործվում է superClass-ի մեթոդների կամ ինիցիալիզատորների հասանելիության համար:
  • override: Կլիդվոջ, որը օգտագործվում է superClass-ի մեթոդների կամ հատկությունների վերագրում համար:
  • final: Մոդիֆիկատոր, որը կարող է կիրառվել դասի, մեթոդի կամ հատկության վրա՝ արգելելու նրա վերագրումը կամ ժառանգությունը:

Ցանցը, որը ցույց է տալիս ժառանգության շղթան՝

Դասը Ժառանգում է makeSound-ը վերագրում է?
NSObject - Ոչ
Animal NSObject Ոչ
Dog Animal Այո
Poodle Dog Ոչ

Ժառանգության շղթան թույլ է տալիս կրկնօրինակել կոդը, ստեղծել մասնագիտացված տարբերակներ և կազմակերպել տվյալների կառուցվածքը հիերարխիկ տեսքով։