kotlin中可见性与Java的区别

34 阅读1分钟

Kotlin 提供了四种主要的可见性修饰符:publicprivateprotectedinternal。这些修饰符可以应用于类、接口、函数、属性、构造函数等。

  1. 如果没有显式指定可见性修饰符,默认的可见性是 public

这里的publicprivateprotected都很好理解,和Java的修饰符基本上一样,主要是这个internal是Kotlin独有的,这里重点解释说明一下

internal

internal 修饰符的作用范围是模块内部 ,即只能在同一个模块内访问

在 Kotlin 中,模块 是指一组一起编译的代码文件。在 Gradle 项目中,每个子工程(subproject)通常被视为一个独立的模块(maven拆多工程一样)。例如:

  • 如果你的项目通过 Gradle 拆分成了 AB 两个子工程,那么:
    • A 是一个模块。
    • B 是另一个模块。

举一个例子,在项目中我拆分了两个子工程一个basic,另外一个functional,在basic子工程中我定义了Helper类

// internal关键字修饰
internal class Helper {
    fun help() =  println("帮助")
}

functional模块中引入basic模块,来使用Helper类,此时idea就已经提示报错了。

dependencies {
    // 引入basic模块
    implementation(project(":kt-basic:basic"))
}

image.png

小结

修饰符类内部同文件子类同模块其他模块
public
private
protected
internal