Sobes.tech
Junior — Middle

Механизми ва хусусиятҳои мерос дар барномасозии объектӣ-равонаро шарҳ диҳед.

sobes.tech AI

Ҷавоб аз AI

Дар оюми объектӣ (OOP) дар бар мегирад, ки ирсӣ имкон медиҳад, ки синфи нав бар асоси синфи мавҷуда сохта шавад, ки хусусиятҳо ва усулҳои онро ба мерос мегирад. Ин кӯмак мекунад, ки коди такроршаванда ва ташкилоти ҳиерархии объектҳоро пешбарӣ кунад.

Хусусиятҳои ирсӣ:

  • Ҳиерархияи синфҳо: синфи зер (ҳерит) рафторро ё васеъ мекунад ё иваз мекунад, ки аз синфи боло (падар) гирифта шудааст.
  • Полифросификатсия: объектҳои синфи зер метавонанд дар ҷойҳое истифода шаванд, ки интизор меравад, ки объект аз синфи боло аст.
  • Инкапсулятсия: ирсӣ принсипи пинҳон кардани маълумотро вайрон намекунад, аммо синфи зер дастрасӣ дорад ба аъзои муҳофизатшуда ва умумӣ аз синфи боло.

Дар Go, ирсият мустақим нест, аммо композиция ва интерфейсҳо имкон медиҳанд, ки моделҳои монандро амалӣ кунанд.

Масалан дар Go бо истифодаи композиция:

 type Animal struct {
    Name string
}

func (a Animal) Speak() string {
    return "..."
}

// Dog "мирос" аз Animal тавассути embedding
// ва метавонад усули Speak-ро иваз кунад

type Dog struct {
    Animal
}

func (d Dog) Speak() string {
    return "Woof!"
}

func main() {
    dog := Dog{Animal{Name: "Buddy"}}
    fmt.Println(dog.Name)      // Buddy
    fmt.Println(dog.Speak())   // Woof!
}