Sobes.tech
Junior

Ինչ կարող եք ասել ժառանգության մասին ծրագրավորման մեջ։

sobes.tech AI

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

Ներառումը օբյեկտային ծրագրավորման մեխանիզմ է, որը թույլ է տալիս մեկ դասի (նվագ կամ ժառանգական դաս) ժառանգել այլ դասի (հայր կամ հիմնական դաս) հատկություններն ու մեթոդները:

Հիմնական հասկացություններ՝

  • Կոդի վերօգտագործում: Ներառումը թույլ է տալիս ժառանգական դասին օգտագործել արդեն գոյություն ունեցող կոդը, խուսափելով կրկնությունից:
  • is-a հարաբերություն: Ներառումը մոդելավորում է "է" (is-a) հարաբերությունը։ Օրինակ, "Որոշակի շուն է մեմել":
  • Երկարացում: Ժառանգական դասը կարող է ավելացնել նոր հատկություններ և մեթոդներ կամ վերագրել (override) առկա մեթոդները՝ փոխելու նրա վարքը:

Swift-ում՝

  • Ներառումը միայն դասերի համար է։ Կառուցվածքները և enum-ները չեն աջակցում ժառանգությանը:
  • Օգտագործվում է class բանալի բառը:
  • Նվագ դասը նշվում է երկու կետից հետո և ծնողական դասի անունից:
  • Ծնող դասի մեթոդները կարող են վերագրել override բանալի բառով:
  • Ծնող դասի իրականացման մուտքը կատարվում է super բանալի բառով:

Օրինակ՝

class Animal {
    var name: String

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

    func makeSound() {
        print("Անհայտ ձայն")
    }
}

class Dog: Animal {
    func bark() {
        print("Հաու!")
    }

    override func makeSound() {
        print("Հաու-հաու!")
    }
}

let myDog = Dog(name: "Բարոն")
myDog.makeSound() // Արտածում՝ Հաու-հաու!
myDog.bark() // Արտածում՝ Հաու!

Կարևոր է հիշել, որ գերազանց կամ սխալ օգտագործումը ժառանգության կարող է հանգեցնել կոդի ճկունության և սպասարկման խնդիրների (օրինակ՝ "խարխլվող հիմնական դասի խնդիր"): Swift-ում հաճախ նախընտրում են այլ մեխանիզմներ՝ ինչպես կոմպոզիցիա և պրոտոկոլներ՝ ճկունություն ապահովելու համար: