📜  Kotlin可见性修改器(1)

📅  最后修改于: 2023-12-03 15:32:31.506000             🧑  作者: Mango

Kotlin可见性修改器

在 Kotlin 中,访问修饰符用于控制编译器和其他程序中代码的可见性。可见性修改器包括以下四种:public、private、internal 和 protected。

1. public

在 Kotlin 中,如果一个类、方法或属性没有显式的访问修饰符,那么它默认是 public 的。Public 元素在任何地方都是可见的,包括其它库中。

// 定义一个 public 类
class Example {
    // 定义一个 public 方法
    fun publicFunction() {
        // 访问另一个 public 方法
        this.sayHello()
    }

    // 定义一个 private 方法
    private fun sayHello() {
        println("Hello Kotlin!")
    }
}

fun main() {
    // 创建 Example 实例
    val example = Example()
    // 调用 public 方法
    example.publicFunction()
}
2. private

private 修饰符用于指定类、方法或属性的访问范围仅限于该类内部。它不能在同一文件的其他类中可见。

class Example {
    private val secret = "My secret"

    fun displaySecret() {
        println(secret)
    }
}

fun main() {
    val example = Example()
    // 这个数据成员是被私有化的,不能在 main() 中访问
    // println(example.secret)
    // 只有类内部可以访问该数据成员
    example.displaySecret()
}
3. internal

internal 修饰符意味着该元素在该模块内的任何位置都可见。

// 模块内定义的类和函数可以使用 internal 修饰符
internal class Example {
    internal fun display() {
        println("Display message.")
    }
}

fun main() {
    val example = Example()
    example.display()
}
4. protected

protected 修饰符用于指定类方法或属性的访问范围仅限于该类及其子类中。可以在任何地方访问该类及其子类,但是不能在该类的同级类中访问。

open class A {
    protected val i = 1
}

class B : A() {
    fun getValue(): Int {
        // 子类可以访问父类的 protected 数据成员
        return i
    }
}

fun main() {
    val b = B()
    // Unlike Java, cannot access 'i' from outside class or subclass
    // println(b.i)
    println(b.getValue())
}

以上为 Kotlin 可见性修改器的基础使用,可以通过合理的应用可见性修改器,提高代码的隐藏性、复用性和可读性。