📅  最后修改于: 2023-12-03 15:02:33.154000             🧑  作者: Mango
在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
的实例。
嵌套类和内部类都可以定义在一个类中。它们的主要区别在于:嵌套类是独立的,不持有对外部类的引用,而内部类持有对外部类的引用。我们可以根据实际需要来选择使用哪种类型的类。