В чем разница между protected в Java и protected в Kotlin

«В чем разница между protected в Java и protected в Kotlin» — вопрос из категории Kotlin, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java protected разрешает доступ:

  • Внутри класса
  • Внутри пакета (package-private)
  • В подклассах (даже из других пакетов)

В Kotlin protected более строгий:

  • Доступ только внутри класса
  • И в подклассах (но только если они в том же файле или модуле)

Пример Kotlin:

open class Parent {
    protected val x = 10  // Доступно только в Parent и его наследниках
}

class Child : Parent() {
    fun getX() = x  // OK
}

В Kotlin нет package-private доступа, поэтому protected не дает доступ внутри пакета, только наследникам. Для package-private в Kotlin используется internal (видимость в пределах модуля).