Sobes.tech
Junior

Дар бораи меросгирӣ дар барномасозӣ чӣ мегӯед?

sobes.tech AI

Ҷавоб аз AI

Меҳварӣ механизми барномасозии объектӣ-равона мебошад, ки имкон медиҳад, ки як синф (синфи зер ё синфи фарзӣ) хусусиятҳо ва усулҳоро аз дигар синф (синфи падар ё асосӣ) мерос барад.

Масоили калидӣ:

  • Истифодаи такрорӣ кардани код: Меҳварӣ имкон медиҳад, ки синфи фарзӣ кодро, ки аллакай дар синфи падар мавҷуд аст, истифода барад ва такрорро пешгирӣ кунад.
  • Муштаракият is-a: Меҳварӣ муносибати "ҳаст" (is-a)-ро модел мекунад. Масалан, "Як саг ҳаст як мӯъмино".
  • Тамаркуз: Синфи фарзӣ метавонад хусусиятҳои нав ва усулҳоро илова кунад ё усулҳои мавҷударо (override) нависад, то рафторро тағир диҳад.

Дар Swift:

  • Меҳварӣ танҳо барои синфҳо дастгирӣ мешавад. Сохторҳо ва enumerationҳо меварат намегиранд.
  • Калидвожа 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, одатан механизмҳои дигар, ба монанди таркиб ва протоколҳо, барои расидан ба чандирӣ бештар истифода мешаванд.