Middle
Хусусиятҳои кор бо конструкторҳо ва оғозёбии объектҳо дар Kotlin чист?
sobes.tech AI
Ҷавоб аз AI
Дар Kotlin, синфҳо метавонанд конструктори асосӣ ва як ё чанд конструктори дуввумро дошта бошанд.
Конструктори асосӣ:
- Дар сари синф эълон мешавад:
class User(val номи: String, var синну сол: Int = 0) { // бадани синф } - Танаъзул надорад. Код ваҳдатсозӣ дар блокҳои
initиҷро мешавад. - Хусусиятҳое, ки дар конструктори асосӣ бо
valёvarэълон шудаанд, хусусиятҳои синф мешаванд. - Параметрҳои конструктор метавонанд дар блокҳои
initва ҳангоми инициализатсияи хусусиятҳо истифода шаванд:init { println("Инициализатсияи корбар $ном") } val тавсиф = "Корбар: $ном, синну сол: $синну сол" - Агар конструктори асосӣ ягон аннотация ё модификатор надошта бошад, калимаи
constructorметавонад нодида гирифта шавад.
Блокҳои init:
- Код ваҳдатсозӣ доранд, ки ҳангоми эҷоди намунаи синф иҷро мешаванд.
- Дар тартиб иҷро мешаванд, ки дар он онҳо эълон шудаанд.
- Пас аз даъвати конструктори асосӣ (агар бошад), аммо пеш аз конструкторҳои дуввум.
Конструкторҳои дуввум:
- Бо калимаи
constructorэълон мешаванд. - Мутобиқ метавонанд даъватро ба дигар конструкторҳои синф бо
this()ё конструктори синфи асосӣ боsuper()делегат кунанд. Ин даъват бояд аввалин дастур бошад.class User(val номи: String) { constructor(ном: String, синну сол: Int) : this(ном) { println("Конструктори дуввум") // Логикаи инициализатсия } } - Агар синф конструктори асосӣ дошта бошад, ҳама конструкторҳои дуввум бояд ё ба он мустақим ё ба воситаи
this()делегат кунанд.
Тартиби инициализатсия:
- иҷрои коди конструктори асосӣ (агар бошад).
- иҷрои блокҳои
initдар тартиби эълон. - иҷрои коди конструктори дуввум (агар истифода шавад).
Масалан:
class Example(ном: String) {
init {
println("Блоки init аввал барои $ном")
}
val хусусият1 = "Хусусият 1"
init {
println("Блоки init дуввум барои $ном")
}
constructor(ном: String, синну сол: Int) : this(ном) {
println("Конструктори дуввум барои $ном, синну сол $синну сол")
}
}
fun main() {
val ex1 = Example("Корбар1") // Натиҷа: Блоки init аввал барои Корбар1, Блоки init дуввум барои Корбар1
val ex2 = Example("Корбар2", 30) // Натиҷа: Блоки init аввал барои Корбар2, Блоки init дуввум барои Корбар2, Конструктори дуввум барои Корбар2, синну сол 30
}
Хусусиятҳои асосӣ: синтаксиси декларативии конструктори асосӣ, истифодаи блокҳои init барои логикаи инициализатсия, делегатсияи ошкор дар конструкторҳои дуввум барои таъмини мутобиқат дар эҷоди объектҳо.