Какая область видимости у protected

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

Ответ

protected в Kotlin/Java означает, что член класса (поле, метод) доступен:

  1. Внутри самого класса
  2. Внутри классов-наследников (даже из других пакетов)
  3. Внутри того же пакета/модуля (только в Java, в Kotlin это не работает)

Пример в Kotlin:

open class Parent {
    protected val secret = "123"
}

class Child : Parent() {
    fun getSecret(): String {
        return secret // доступно
    }
}

fun main() {
    val child = Child()
    println(child.getSecret()) // "123"
    // println(child.secret) // ошибка: protected
}