Kotlin 从学习到 Android 第九章 可见性修饰符

本文介绍了Kotlin中可见性修饰符private, protected, internal和public的使用方式及其在不同上下文中的作用范围,包括顶级声明、类成员、构造函数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

类、对象、接口、构造函数、函数、属性和它们的 setter 都可以有可见性修饰符。( getter 总是与属性具有相同的可见性。)在 Kotlin 中有四个可见性修饰符: private , protected , internal 和 public。如果没有用修饰符修饰,默认是 public 。

下面将介绍可见性修饰符在修饰不同类型时的作用:

函数、属性和类、对象和接口可以在“顶级”中声明,也就是说直接在包中:

// file name: example.kt
package foo

fun baz() {}
class Bar {}
  • 如果不声明可见性修饰符,默认是 public ,那么你所声明的可以被任意引用;
  • 如果声明为 private, 则只能在这个文件中被引用;
  • 如果声明为 internal, 则在同一个 module 可见;
  • 顶级声明中不能使用 protected ;

类和接口

对于类中的成员:

  • private :只在该类中可见;
  • protected :只在该类和其子类中可见;
  • internal :在同一个 module 中可见;
  • public :任何位置都可见;

java 用户注意:在 Kotlin 中外部类不能使用内部类的私有成员。

如果你覆写了一个 protected 的成员,但是没有用可见性修饰符修饰,那么这个覆写的成员也是 protected 的。

构造函数

要指定一个类的主构造函数的可见性,请使用以下语法(注意,需要添加 constructor 关键字):

class C private constructor(a: Int) { ... }

这里构造函数是 private 的。默认情况下,所有的构造函数都是 public 的,这意味着它们在类可见的任何地方都可见(例如,一个内部类的构造函数只能在同一个 module 中可见)。

局部声明

局部变量、函数和类不能具有可见性修饰符。

module

internal 表示成员在同一个 module 中是可见的。更具体地说,一个 module 是一组汇集在一起的 Kotlin 文件:

  • 一个 IntelliJ IDEA module;
  • 一个 Maven 或者 Gradle 项目;
  • 一组用 Ant 任务调用编译的文件;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值