📜  Kotlin嵌套和内部类(1)

📅  最后修改于: 2023-12-03 14:43:42.546000             🧑  作者: Mango

Kotlin嵌套和内部类

在 Kotlin 中,嵌套类和内部类是两个不同的概念。

嵌套类

嵌套类(Nested Class)是一个被包含在另一个类中的类,并且没有持有包含它的外部类的引用。

class OuterClass {
    // 外部类成员

    class NestedClass {
        // 嵌套类成员
    }
}

使用嵌套类的语法:

val nestedClassInstance = OuterClass.NestedClass()
内部类

内部类(Inner Class)是一个被包含在另一个类中的类,但是它持有包含它的外部类的引用。

class OuterClass {
    // 外部类成员

    inner class InnerClass {
        // 内部类成员
    }
}

使用内部类的语法:

val innerClassInstance = OuterClass().InnerClass()

注意,内部类只能在有实例的情况下创建,而嵌套类可以直接使用。

示例
class OuterClass(private val name: String) {
    private val outerClassProperty = "OuterClassProperty"

    class NestedClass {
        fun printInfo() {
            println("This is a nested class.")
        }
    }

    inner class InnerClass {
        fun printInfo() {
            println("This is an inner class, its outer class name is ${name}, and its outer class property is ${outerClassProperty}.")
        }
    }
}

fun main() {
    val nestedClassInstance = OuterClass.NestedClass()
    val innerClassInstance = OuterClass("OuterClass").InnerClass()

    nestedClassInstance.printInfo()
    innerClassInstance.printInfo()
}

输出:

This is a nested class.
This is an inner class, its outer class name is OuterClass, and its outer class property is OuterClassProperty.

此示例演示了嵌套类和内部类的使用。NestedClass 可以通过外部类来访问,而 InnerClass 则需要实例化外部类对象后才能访问。