Sobes.tech
Назад к вопросам
Junior — Middle
74

Объясните, что такое закрытые классы в Kotlin и как они используются

Компании, где спрашивали
RedLab
Viasat tech
Dion

Ответ от нейросети

sobes.tech 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("Data: ${result.data}")
        is Result.Error -> println("Error: ${result.error.message}")
    }
}

Если же под "закрытыми классами" имелись в виду классы с модификатором private или internal, то это классы с ограниченной областью видимости: private — видимы только внутри файла, internal — внутри модуля.