Ответ
public — доступен из любого класса.
private — доступен только внутри своего класса.
protected — доступен внутри класса и его наследников.
Пример:
open class Parent {
public val a = 1 // доступно везде
private val b = 2 // только внутри Parent
protected val c = 3 // Parent + наследники
}
class Child : Parent() {
fun test() {
println(a) // OK
// println(b) // Ошибка: private
println(c) // OK (protected)
}
}