Kotlin 学习——可见性修饰符

    在 Kotlin 中,对于类、对象、接口、构造函数、方法、属性和属性的 setter 都可以使用可见性修饰符来标记(属性的 getter 与属性是相同的可见性)。

    在 Kotlin 中有四种可见修饰符:private、protected、internal 和 public。相信大家有过一定编程基础都知道 private、protected 和 public 一般来说意味着什么,那么 Kotlin 中的 internal 又代表什么呢?一般是指相同模块可见,这里的模块指的是编译在一起的一套 Kotlin 文件,比如:一个 Intellij IDEA 模块、一个 Maven 项目、一个 Gradle 源集(例外:test 源集可以访问 main 的 internal 声明)、一次 <Kotlinc> Ant 任务执行所编译的一套文件。

    因为 Kotlin 中函数、属性和类、对象和接口都可以在顶层声明(即直接在包内的文件里声明),所有当它们在顶层声明和在类、接口中声明,四个可见性修饰符的作用稍有差异,所以我们分开说明:

  • 顶层声明:
private 仅声明的文件内可见
protected 不适用于顶层说明
internal 相同模块内随处可见
public 随处可见,而且不指定可见性修饰符则默认为 public
  • 类和接口内声明
private 仅在这个类里面可见
protected 仅在这个类和其子类中可见
internal 能见到类声明的本模块中随处可见
public 能见到类声明的地方随处可见

  • 需要注意的是:

    在 Kotlin 中外部类是不能访问内部类的 private 成员的。

    而且如果子类覆盖父类的一个protected 成员,如果没有指定可见性修饰符,默认为 protected。

    构造函数默认都是 public 的。

    即使要使用别的包的成员变量是可见的顶层声明,也是要导包的。

    

   

猜你喜欢

转载自blog.csdn.net/young_time/article/details/80548895