даро дар бораи синфҳои маълумот ва синфҳои seal дар Kotlin.
sobes.tech AI
Ҷавоб аз AI
Дарсҳои маълумоти Kotlin барои нигоҳ доштани маълумот истифода мешаванд. Онҳо ба таври худкор методҳои муфид мисли equals(), hashCode(), toString(), copy() ва инчунин компонентҳо барои вайрон карданро тавлид мекунанд.
// Масали дарси маълумот
data class User(val name: String, val age: Int)
Классҳои Seal барои намояндагии ҳиерархияи маҳдуд истифода мешаванд. Ҳамаи зери-классҳо бояд дар ҳамон файл бо класс Seal муайян карда шаванд (дар Kotlin 1.5+ ин маҳдудият сабук карда шудааст). Ин имкон медиҳад, ки компилятор дар баррасии зери-классҳо пурра бошад, масалан, дар изрази when.
// Масали класс Seal
sealed class Result {
data class Success(val data: String) : Result()
data class Error(val message: String) : Result()
object Loading : Result()
}
// Масали истифодаи класс Seal дар изрази `when`
fun processResult(result: Result) {
when (result) {
is Result.Success -> println("Бомуваффақият: ${result.data}")
is Result.Error -> println("Хатогӣ: ${result.message}")
Result.Loading -> println("Бор кардан...")
}
}
Тавсифи асосӣ:
- Мақсад: классҳои маълумот - нигоҳ доштани маълумот, классҳои Seal - маҳдуд кардани ҳиерархияи классҳо.
- Методҳои тавлидшуда: классҳои маълумот методҳои стандартиро барои маълумотҳо тавлид мекунанд, классҳои Seal - не.
- Маҳдудият дар зери-классҳо: классҳои Seal маҳдудиятҳоро дар бораи эълони зери-классҳо мегузоранд, классҳои маълумот - не.
- пурра дар
when: компилятори Kotlin метавонад пурра будани зери-классҳоро дарwhenсанҷад, бе ниёз ба шохаиelse.
Ҳарду, классҳои Seal ва маълумот метавонанд абстрактӣ бошанд, аммо классҳои маълумот наметавонанд open бошанд (зеро онҳо final мебошанд ба таври худкор) ва мустақиман методҳои open-ро иҷро наметавонанд (танҳо тавассути интерфейсҳо ё классҳои абстрактӣ). Классҳои Seal, ба таври худкор, абстрактӣ мебошанд ва конструкторҳои онҳо хусусӣ мебошанд.