Kotlin 笔记 3.4:可见性修饰符

和 Java 不同的是,Kotlin 的可见性修饰符除了 privateprotectedpublic 之外,还多了一个 internal

在 Kotlin 中,不管是类、包还输属性方法,如果不指定修饰符,默认是 public的。

函数、属性和类、对象和接口直接在包内声明:

  • 如果你不指定任何可见性修饰符,默认为 public,这意味着你的声明将随处可见;
  • 如果你声明为 private,它只会在声明它的文件内可见;
  • 如果你声明为 internal,它会在相同模块内随处可见;
  • protected 不适用于顶层声明。

类和接口

对于类内部成员来说:

  • private 意味着只在这个类内部(包含其所有成员)可见;
  • protected—— 和 private一样 + - 在子类中可见。
  • internal —— 能见到类声明的 本模块内 的任何客户端都可见其 internal 成员;
  • public —— 能见到类声明的任何客户端都可见其 public 成员。

注意

  1. Kotlin 中的外部类不能访问内部类的 private 成员
  2. 如果要覆盖一个 protected 成员,但并没有显式指定其可见性,那么它还是 protected 类型的

构造函数

默认情况下,构造函数是 public 的,当然也可以修改它的可见性:

class Person private constructor(name:String,age:Int){
    ...
}