Sobes.tech
Junior — Middle

Kotlinдеги жабык класстар эмне жана алар кандай колдонулат

sobes.tech AI

AIден жооп

Kotlinде "жабык класстар" (closed classes) деген атайын түшүнүк өзүнчө түр катары жок, бирок окшош концепция бар — sealed класстар (жабык класстар).

Sealed класс мурас тартибин чектейт: мындай класстын бардык подкласстары ошол эле файлда жарыялануусу керек. Бул компиляторго бардык мүмкүн болгон подкласстарды билүүгө жана аларды, мисалы, when өрнөктөрүндө, else бөлүгүн жазбастан колдонууга мүмкүндүк берет.

Sealed класстарды чектелген варианттар топтомун моделдөө үчүн колдонуу ыңгайлуу, мисалы, абалдар же окуялар.

Мисал:

sealed class Result {
    data class Success(val data: String) : Result()
    data class Error(val error: Throwable) : Result()
}

fun handleResult(result: Result) {
    when(result) {
        is Result.Success -> println("Маалымат: ${result.data}")
        is Result.Error -> println("Ката: ${result.error.message}")
    }
}

Эгер "жабык класстар" private же internal модификатору менен жарыяланган класстарды түшүндүрсө, анда алар чектелген көрүнүү чөйрөсүнө ээ класстар: private — гана файлдын ичинде көрүнөт, internal — модулдун ичинде.