Java中的可见性修饰符:
修饰符 | 类内访问 | 包内访问 | 从不同包的子类访问 | 从不同包的非子类访问 |
---|---|---|---|---|
public | 可以 | 可以 | 可以 | 可以 |
protected | 可以 | 可以 | 可以 | 不可以 |
默认 | 可以 | 可以 | 不可以 | 不可以 |
private | 可以 | 不可以 | 不可以 | 不可以 |
Kotlin中的可见性修饰符与Java中类似,但是
① Java中默认的可见性为包私有,而Kotlin中默认的可见性为public。这是由于Kotlin将包作为命名空间中组织代码的一种方式,并没有将其用作可见性控制。
② 在Java中,可以从同一个包中访问一个protected的成员,但是在Kotlin中不允许,这是由于protected成员只在类和它的子类中可见。
③ Kotlin中一个外部类不能看到其内部(或者嵌套)类中的 private 成员。
④ Kotlin提供了一个新的修饰符,internal,用来表示“只在模块内部可见”。一个模块就是一组一起编译的Kotlin文件。
所以,Kotlin中的修饰符有 public、protected、private和internal。
修饰符 | 类成员可见范围 |
---|---|
public(默认) | 所有地方可见 |
internal | 模块中可见 |
protected | 子类中可见 |
private | 本类中可见 |