📜  Kotlin嵌套类和内部类(1)

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

Kotlin嵌套类和内部类

在Kotlin中,嵌套类和内部类都可以定义在一个类中。它们的主要区别在于:嵌套类是独立的,不持有对外部类的引用,而内部类持有对外部类的引用。

嵌套类

嵌套类是一个完全独立的类,与外部类没有任何关联。嵌套类通常用于只在外部类内部使用的类,或者在外部类之外也需要使用该类的情况。

下面是一个示例:

class Outer {
    private val name = "Outer"

    class Nested {
        fun greetings() {
            println("Hello from Nested!")
        }
    }
}

fun main() {
    val nested = Outer.Nested()
    nested.greetings()  // 输出:Hello from Nested!
}

在上面的示例中,Nested是一个嵌套类,它与外部类Outer没有任何关联。我们可以通过Outer.Nested的方式直接创建Nested的实例,而不需要先创建Outer的实例。

内部类

内部类是定义在外部类中的类,它持有外部类的引用。内部类可以访问外部类的所有成员(包括私有成员),而且外部类也可以访问内部类的所有成员。

下面是一个示例:

class Outer {
    private val name = "Outer"

    inner class Inner {
        fun greetings() {
            println("Hello from Inner! My name is $name.")
        }
    }
}

fun main() {
    val outer = Outer()
    val inner = outer.Inner()
    inner.greetings()  // 输出:Hello from Inner! My name is Outer.
}

在上面的示例中,Inner是一个内部类,它可以访问外部类Outer的成员name。我们需要先创建Outer的实例,然后通过outer.Inner()的方式创建Inner的实例。

总结

嵌套类和内部类都可以定义在一个类中。它们的主要区别在于:嵌套类是独立的,不持有对外部类的引用,而内部类持有对外部类的引用。我们可以根据实际需要来选择使用哪种类型的类。