Junior
Swift dasturlash tilida sinflar merosxo'rlik zanjirini haqida gapiring.
sobes.tech AI
AIdan javob
Swiftda sinflar oddiy merosxo'rlikni qo'llab-quvvatlaydi. Har bir sinf ota sinfdan meros oladi va merosxo'rlik zanjiri asosiy sinfdan boshlanadi, u hech narsa meros olmaydi va pastga qarab bolalar sinflar orqali kengayadi.
Merosxo'rlik xususiyatlari:
- Yozib olish (Overriding): Bola sinf ota sinf metodlari, xususiyatlari va subskriptlarini yozib olishi mumkin.
overridekalit so'zi ishlatiladi. - Yozib olishni oldini olish (Preventing Overrides): Bir sinf a'zosining yozib olinishini oldini olish uchun uni
finalkalit so'zi bilan belgilash mumkin. Butun sinfnifinaldeb e'lon qilish mumkin. - Ota sinfga kirish: Bola sinf
superkalit so'zi yordamida ota sinfning amalga oshirilgan a'zolariga kirish mumkin. Bu ota sinf metodining amalga oshirilishini chaqirish yoki ota sinf xususiyatiga kirish uchun foydalidir.
Misol:
// Asosiy sinf
class Vehicle {
var currentSpeed = 0.0
func makeNoise() {
// Bo'sh amalga oshirish
}
}
// Vehicle'dan meros olgan bola sinf
class Car: Vehicle {
var numberOfDoors = 4
// makeNoise metodini yozib olish
override func makeNoise() {
print("Beep beep")
}
}
// Car'dan meros olgan bola sinf
class ElectricCar: Car {
var batteryLevel = 100.0
// Yangi xususiyat qo'shish
let isElectric = true
// Asosiy sinfdan xususiyatni yozib olish
override internal var currentSpeed: Double {
didSet {
if currentSpeed > 0 {
print("Elektr avtomobil harakatda")
}
}
}
}
Ushbu misolda:
Vehicle— asosiy sinf.CarVehicledan meros oladi. UnumberOfDoorsxususiyatini qo'shadi vamakeNoisemetodini yozib oladi.ElectricCarCardan meros oladi. UbatteryLevelxususiyatini qo'shadi,isElectrickonstantini vacurrentSpeedxususiyatini yozib oladi.
Meros zanjiri: Vehicle -> Car -> ElectricCar. Bu zanjirdagi har bir sinf, yuqori qatlamdagi sinflarning barcha ochiq (yoki boshqa kontekstda kirish mumkin bo'lgan) a'zolariga kirish huquqiga ega.