Можно ли объявлять свойство вне класса в Kotlin

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

Ответ

В Kotlin нельзя объявлять свойства (поля класса) вне класса напрямую. Все свойства должны быть объявлены внутри класса, объекта (object) или companion object.

Однако можно объявлять:

  1. Топ-уровневые переменные (но технически это не свойства, а глобальные переменные)
  2. Константы (const val) в файле
  3. Расширенные свойства (extension properties)

Пример:

// Топ-уровневая переменная (не свойство!)
val globalVar = "I'm global"

class MyClass {
    // Настоящее свойство
    val prop: Int = 42
}

// Extension property
val String.lastChar: Char 
    get() = this[length - 1]