类和接口中的可见性

在类中定义成员变量:

  • private意味着仅仅是在类中可见
  • protected意味着在类及其子类中可见
  • internal意味着在同一个module下的任何可见的类都可以使用这个internal成员
  • public意味着任何类只要是能访问其对应的类就可以访问这个public成员

对Java用户需要注意的是:在Kotlin中外部类不能访问内部类中的private成员,在Java中则可以,请查看对应内容

如果你覆写了一个protected的成员并且没有显示的指定任何的可见性修饰符,那么覆写的成员的可见性依然是protected。

open class Outer {
    private val a = 1
    protected open val b = 2
    internal val c = 3
    val d = 4 // public by default
    protected class Nested {
        public val e: Int = 5
    }
}
class Subclass : Outer() {
    // a is not visible
    // b, c and d are visible
    // Nested and e are visible
    override val b = 5 // 'b' is protected
}
class Unrelated(o: Outer) {
    // o.a, o.b are not visible
    // o.c and o.d are visible (same module)
    // Outer.Nested is not visible, and Nested::e is not visible either
}

results matching ""

    No results matching ""