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