Java 和 Kotlin 的访问控制修饰符

对 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 有同文件概念,在同文件内可访问