对 Java 和 Kotlin 中的访问控制修饰符进行一个小总结
Java 访问控制修饰符
类
外部类:public 、default
内部类:public、protected、default、private
方法和变量
public、protected、default、private
访问权限
修饰符 | 同类 | 同包 | 子类 | 不同包 |
---|---|---|---|---|
public(公开) | √ | √ | √ | √ |
protected(受保护) | √ | √ | √ | - |
没有修饰符(默认) | √ | √ | - | - |
private(私有) | √ | - | - | - |
注:不同包的子类不能访问父类中被 protected
修饰的内部类,但可以访问被 protected
修饰的方法和变量
Kotlin 可见性修饰符
类
外部类:public、internal、private
内部类和嵌套类:public、internal、protected、private
方法和变量
在类中:public、internal、protected、private
在文件中:public、internal、private
访问权限
修饰符 | 同类 | 同模块 | 子类 | 其他 |
---|---|---|---|---|
public(公开,默认) | √ | √ | √ | √ |
internal(模块) | √ | √ | - | - |
protected(受保护) | √ | - | √ | - |
private(私有) | √ | - | - | - |
注:
1、对于 internal
关键字,如果用 Java 代码来调用的话好使,而用 kotlin 代码调用不好使
2、之所以外部类也可以用 private
,因为 kotlin 有同文件概念,在同文件内可访问