Junior
Swift tilida sinflar meroslik zanjirini haqida gapiring.
sobes.tech AI
AIdan javob
Swiftda barcha sinflar, aniq ko'rsatilmagan taqdirda ham, avtomatik tarzda NSObject asosiy sinfidan meros oladi. Bu Swiftni ba'zi boshqa tillardan ajratib turadi, chunki ularning ba'zilarida bir nechta ildiz sinf bo'lishi mumkin.
Meros zanjiri, har bir sinf o'z ota-sinfidan (superklass) xususiyatlar va metodlarni meros qilib oladigan hierarxiyani ifodalaydi. Bir sinf faqat bitta to'g'ridan-to'g'ri superklassga ega bo'lishi mumkin.
Misol:
// Asosiy sinf (avtomatik ravishda NSObjectdan meros oladi)
class Animal {
var name: String
init(name: String) {
self.name = name
}
func makeSound() {
print("Noma'lum hayvon tovushi")
}
}
// Dog sinfi Animaldan meros oladi
class Dog: Animal {
let breed: String
init(name: String, breed: String) {
self.breed = breed
super.init(name: name) // Superklassning initsializatorini chaqirish
}
override func makeSound() { // Superklass metodini qayta yozish
print("Gav-gav")
}
}
// Poodle sinfi Dogdan meros oladi
class Poodle: Dog {
var isHypoallergenic: Bool
init(name: String, breed: String, isHypoallergenic: Bool) {
self.isHypoallergenic = isHypoallergenic
super.init(name: name, breed: breed) // Superklassning initsializatorini chaqirish
}
// Poodle makeSound metodini qayta yozmaydi, Dogdan meros oladi
}
let myDog = Dog(name: "Buddy", breed: "Labrador")
myDog.makeSound() // Chiqish: Gav-gav
let myPoodle = Poodle(name: "Lucy", breed: "Miniature Poodle", isHypoallergenic: true)
myPoodle.makeSound() // Chiqish: Gav-gav - Dogdan meros
Asosiy nuqtalar:
- Meros:
B: Asinfi,BsinfiAsinfidan meros olishini anglatadi. - Superklass: Meros olinadigan sinf. Misolda,
AnimalDoguchun superklass,DogesaPoodleuchun superklass. - Subklass: Boshqa sinfdan meros oladigan sinf. Misolda,
DogAnimalning subklassidir,PoodleesaDogning subklassidir. super: Superklass metodlari yoki initsializatorlariga kirish uchun ishlatiladi.override: Subklassda, superklass metodlari yoki xususiyatlarini qayta yozish uchun kalit so'z.final: Sinf, metod yoki xususiyatga qo'llanadigan modifikator bo'lib, uning qayta yozilishi yoki meros olinishi taqiqlanadi.
Misoldagi meros zanjirini ko'rsatadigan jadval:
| Sinf | Qaysi sinfdan meros oladi | makeSoundni qayta yozadimi? |
|---|---|---|
NSObject |
- | Yo'q |
Animal |
NSObject |
Yo'q |
Dog |
Animal |
Ha |
Poodle |
Dog |
Yo'q |
Meros zanjiri kodni qayta ishlatish, sinflarning maxsus versiyalarini yaratish va ma'lumotlar tuzilmasini hierarxik tarzda tashkil qilish imkonini beradi.