open class Outer {
private val a = 1
protected open val b = 2
internal val c = 3
val d = 4 // デフォルトで public
protected class Nested {
public val e: Int = 5
}
}
class Subclass : Outer() {
// a は見えない
// b, c, d は見える
// Nested と e は見える
override val b = 5 // 'b' は protected
}
class Unrelated(o: Outer) {
// o.a, o.b は見えない
// o.c and o.d は見える(同じモジュール)
// Outer.Nested, Nested::e は見えない
}