Ответ
В Kotlin можно использовать поля класса в extension-функциях, но только если они объявлены как public или internal (в пределах модуля). Однако напрямую обращаться к приватным полям из расширений нельзя, так как расширения не имеют доступа к закрытым членам класса.
Пример:
class MyClass {
val publicField = "Public"
private val privateField = "Private" // Недоступен в extension
}
fun MyClass.printFields() {
println(publicField) // OK
// println(privateField) // Ошибка: Cannot access 'privateField'
}
Расширения работают как статические функции в Java и компилируются в обычные функции с параметром-приемником. Они не нарушают инкапсуляцию класса.