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 的。

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

    

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值