遇横逆之来而不怒
遭变故之起而不惊
当非常之谤而不辩
1. Java中的权限修饰符
我们知道在Java中有四种权限修饰符:
- public
- private
- protected
- 什么也不写(即我们常说的default)
既然是权限修饰符,首先我们要明白对What进行权限管理。
1. 修饰对象
- 类
- 类的成员(变量,方法(构造方法它也是方法),内部类)
只有 public和default才能修饰类
2. 权限范围
public的字面意思是"公共的,公开的", 所以public是权限最大的修饰符。
private的字面意思是“私有的”, 所以private是权限最小的修饰符。
protected的意思是“保护的”。
总结一下:
修饰符 | 同一个类 | 同一个包 | 不同包子类 | 不同包且非子类 |
---|---|---|---|---|
public | Y | Y | Y | Y |
private | Y | N | N | N |
protected | Y | Y | Y | N |
Y | Y | N | N |
说实在,学习Java的时候,一直认为其default的访问权限设计的不合理。Kotlin毕竟是站在巨人的肩膀上产生的。
2. Kotlin中的权限修饰符
Kotlin在没有显式指定修饰符的时候,默认可见性是public
2.1 Kotlin中的Top-Level(顶层)类型
我相信大家在刚开始学习Kotlin的时候,都会有此疑惑:
Kotlin在新建文件时有所不一样,其独有的File类型,文件类型为.kt。简而言之,这就是文档中的top-level类型。
我们可以在Kotlin的.kt文件中,可以在内部定义类,接口,单例,方法,属性,建议大家可以自己试一下。
我们知道protected独特之处是子类关系。protected修饰符是不允许修饰top-level成员的。(PS:想要使用top-level中的成员,必须要import)
其它的类型都能跟Java对应上(PS:Object类型是Kotlin用来声明单例的)
2.2 Kotlin中的权限修饰总结
修饰符 | 作用 | Top-Level |
---|---|---|
public | 全部可见 | 全部可见 |
internal | 模块内可见 | 模块内可见 |
protected | 自身内部+子类 | — |
private | 自身内部 | 自身内部 |