在 Kotlin中有四个可见性修饰符,分别为:
- private
- protected
- internal
- public
如果没有显式的指定修饰符,默认可见性为 public 。他们在不同的声明作用域内有不同的意义。
1、包
在包的声明作用域内,他们用来修饰 Top-level (顶级声明)
- public 。不指定默认为 public 。声明随处可见。
- private。 文件内可见。
- internal 。相同模块内可见。
- protected 。不适于顶级声明。
2、类和接口
- private 。类内不可见。
- protected 。本类和子类可见。
- internal 。本模块内可见。
- punlic 。可见该类则可见该类中 public 成员。
如果你覆盖一个 protected 成员并且没有显式指定其可见性,该成员还会是
protected 可见性。
3、构造函数
默认情况下的构造函数为 public , 如果改变类的构造函数的可见性,那么其对外的可见性也会变化。
class People private constructor(){ ... }
4、局部声明
局部变量、函数和类不能有可见性修饰符。
5、模块
可见性修饰符 internal 意味着该成员只在相同模块内可见。更具体地说, 一个
模块是编译在一起的一套 Kotlin 文件:
一个 IntelliJ IDEA 模块;
一个 Maven 项目;
一个 Gradle 源集(例外是 test 源集可以访问 main 的 internal 声明);
一次 <kotlinc> Ant 任务执行所编译的一套文件。
模块这部分的说明采取完美复制的策略,因为我现在还没有大范围的使用他。