Ответ
Extension-функции в Kotlin позволяют добавлять методы к существующим классам без наследования. Однако у них есть ограничения:
- Не могут обращаться к приватным членам класса (только к public/protected/internal)
- Не поддерживают переопределение (они статически разрешаются во время компиляции)
- Не могут быть абстрактными или содержать open-методы
- Приоритет ниже, чем у членов класса (если метод с таким же именем уже есть в классе, вызовется он)
Пример:
fun String.customExtension() = println("Extension: $this")
"Test".customExtension() // Выведет: Extension: Test