Kotlin与Java可见性修饰符对比
1、Java
类中成员修饰符 | 同一类中可访问 | 同一包中可访问 | 不同包中可访问 | 子类中可访问 |
public | √ | √ | √ | √ |
protected | √ | √ | × | √ |
(default) | √ | √ | × | × |
private | √ | × | × | × |
2、Kotlin
包中成员修饰符 | 同一文件中可访问 | 同一模块中可访问 | 不同模块中可访问 |
public | √ | √ | √ |
internal | √ | √ | × |
protected | 不适用于顶层声明 | ||
private | √ | × | × |
- 如果你不指定任何可见性修饰符,默认为
public
,这意味着你的声明将随处可见; - 如果你声明为
private
,它只会在声明它的文件内可见; - 如果你声明为
internal
,它会在相同模块内随处可见; protected
不适用于顶层声明。
类中成员修饰符 | 同一类中可访问 | 同一模块中可访问 | 不同模块中可访问 | 子类中可访问 |
public | √ | √ | √ | √ |
internal | √ | √ | × | √ |
protected | √ | × | × | √ |
private | √ | × | × | × |
private
意味着只在这个类内部(包含其所有成员)可见;protected
—— 和private
一样 + 在子类中可见。internal
—— 能见到类声明的 本模块内 的任何客户端都可见其internal
成员;public
—— 能见到类声明的任何客户端都可见其public
成员。