Какие знаешь ограничения Extention-функции

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

Ответ

Extension-функции в Kotlin позволяют добавлять методы к существующим классам без наследования. Однако у них есть ограничения:

  1. Не могут обращаться к приватным членам класса (только к public/protected/internal)
  2. Не поддерживают переопределение (они статически разрешаются во время компиляции)
  3. Не могут быть абстрактными или содержать open-методы
  4. Приоритет ниже, чем у членов класса (если метод с таким же именем уже есть в классе, вызовется он)

Пример:

fun String.customExtension() = println("Extension: $this")

"Test".customExtension() // Выведет: Extension: Test