Ответ
В 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 (видимость в пределах модуля).