public
: 公开,可见性最大,哪里都可以引用private
: 私有,可见性最小,根据生命位置不同可分为类中可见和文件中可见protected
: 保护,相当于private
+ 子类可见internal
: 内部,仅对module可见
protected
Java 中 protected
表示包内可见 + 子类可见。
Kotlin 中 protected
表示 private + 子类可见。
Kotlin 相比 Java protected
的可见范围收窄了,原因是 Kotlin 中不再有「包内可见」的概念了,相比 Java 的可见性着眼于 package,Kotlin 更关心的是 module。
private
Java 中的 private
表示类中可见,作为内部类时对外部类「可见」。
Kotlin 中的 private
表示类中或所在文件内可见,作为内部类时对外部类「不可见」。