Можно ли использовать приватные поля в extension функции

«Можно ли использовать приватные поля в extension функции» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно, но только если extension объявлен в том же файле, что и класс. В этом случае extension имеет доступ к private полям класса. Если extension находится в другом файле — доступ будет только к public/protected/internal полям.

Пример:

// MyClass.kt
class MyClass {
    private val secret = "password"
}

fun MyClass.revealSecret() = secret // Работает, так как в одном файле

// OtherFile.kt
fun MyClass.getSecret() = secret // Ошибка: Cannot access 'secret'