Junior
дар бораи занҷири меросии синфҳо дар забони Swift гап занед.
sobes.tech AI
Ҷавоб аз AI
Дар Swift ҳама синфҳо ба таври ғайрирасмӣ аз синфи асосии NSObject мерос мегиранд, ҳатто агар ин ба таври равшан нишон дода нашуда бошад. Ин Swift-ро аз баъзе забонҳои дигар, ки метавонад чандин синфи реша дошта бошанд, фарқ мекунад.
Занҷири мероссозӣ як ҳиерархияро намоиш медиҳад, ки дар он ҳар як синф хусусиятҳо ва усулҳоро аз синфи падар (суперкласс) мерос мегирад. Синф метавонад танҳо як суперкласс дошта бошад.
Масалан:
// Синфи асосӣ (ба таври ғайрирасмӣ аз 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) // Иҷрои инициализатори суперкласс
}
override func makeSound() { // Баргардонидани усули суперкласс
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) // Иҷрои инициализатори суперкласс
}
// 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мерос мегирад. - Суперкласс: Класс, ки аз он мерос мегирад. Дар мисол
Animalсуперкласс бароиDogаст, ваDogсуперкласс бароиPoodle. - Подкласс: Класс, ки аз дигар класс мерос мегирад. Дар мисол
Dogподкласс бароиAnimalаст, ваPoodleподкласс бароиDog. super: Барои дастрасӣ ба иҷрои усулҳо ё инициализаторҳои суперкласс истифода мешавад.override: Калидвожа, ки барои баргардон кардани усулҳо ё хосиятҳои суперкласс дар подклассҳо истифода мешавад.final: Модификатор, ки метавонад ба класс, усул ё хосият татбиқ карда шавад, то аз баргардон ё мерос гирифтан манъ кунад.
Таблицаи нишондиҳанда, ки занҷираи мероссозиро дар мисол нишон медиҳад:
| Класс | Мерос мегирад аз | makeSound-ро баргардон мекунад? |
|---|---|---|
NSObject |
- | Не |
Animal |
NSObject |
Не |
Dog |
Animal |
Бале |
Poodle |
Dog |
Не |
Занҷираи мероссозӣ имкон медиҳад, ки код такрор ба такрор истифода шавад, версияҳои махсуси синфҳоро эҷод кунад ва сохтори маълумотро дар шакли ҳиерархӣ ташкил диҳад.