Kotlin 嵌套和内部类

Kotlin 嵌套和内部类,在本指南中,您将通过示例了解 Kotlin 中的嵌套和内部类。

Kotlin 嵌套类

当一个类在另一个类中声明时,它被称为嵌套类。嵌套类类似于 Java 中的静态嵌套类。

class OuterClass {
    ....
    class NestedClass {
        ...
    }
}

注意事项:

  1. 嵌套类无法访问外部类的成员。
  2. 要访问嵌套类的成员,我们将点(.)运算符与外部类一起使用。

Kotlin 嵌套类示例

在下面的示例中,我们有一个外部类和一​​个嵌套类。此示例演示如何使用点(.)运算符访问嵌套类的成员。

class OuterClass {

    val oStr = "Outer Class"

    class NestedClass {
        val nStr = "Nested Class"
        fun demo() = "demo() function of nested class"
    }
}

fun main(args: Array<String>) {
    // accessing data member of nested class
    println(OuterClass.NestedClass().nStr)

    // accessing member function of nested class
    println(OuterClass.NestedClass().demo())

    // creating object of the Nested class
    val obj = OuterClass.NestedClass()
    println(obj.demo())
}

输出:

Kotlin 嵌套类

Kotlin 嵌套类 – 无法访问外部类的成员

以下程序将抛出编译错误,因为嵌套类无法访问外部类的成员。这里嵌套类试图访问属于外部类的成员oStr,因此我们得到一个编译错误。我们可以通过使用内部类来解决这个问题,这将在同一篇文章的下一节中讨论。

class OuterClass {

    val oStr = "Outer Class"

    class NestedClass {
        val nStr = "Nested Class"
        fun demo() = "demo() function using $oStr"
    }
}

fun main(args: Array<String>) {
    println(OuterClass.NestedClass().demo())
}

输出:

Compilation Error

Kotlin 内部类

使用inner修饰符声明 Kotlin 内部类。内部类可以访问外部类的成员。让我们使用上面使用内部类而不是嵌套类的相同示例。这里我们使用内部内部类访问外部类的成员oStr

class OuterClass {

    val oStr = "Outer Class"

    inner class InnerClass {
        val nStr = "Nested Class"
        fun demo() = "demo() function using oStr"
    }
}

fun main(args: Array<String>) {
    val o = OuterClass()
    println("{o.InnerClass().demo()}")

    val i = OuterClass().InnerClass()
    println("${i.demo()}")
}

输出:

Kotlin 内部类

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程