Kotlin 嵌套类和内部类
在Kotlin中,嵌套类(Nested Class)和内部类(Inner Class)是两种不同的类,它们在定义和使用上有一些区别。
1.嵌套类(Nested Classes)默认是静态的(即等同于Java中的static),可以有修饰符(如private、protected),不持有外部类的引用,不能访问外部类的成员。
2.内部类(Inner Classes)持有外部类的引用,可以访问外部类的私有成员
使用区别:嵌套类则更多地用于创建独立的、不需要访问外部类成员的类,而内部类经常用于定义在某个类的作用域内,只为外部类服务的类。
代码举例:
class Outer{
class MyNested{//嵌套类
fun printMessage(){
println("这是一个嵌套类")
// println("外部类属性:${this@Outer.name}")//报错,嵌套类不持有外部类的引用,不能访问外部类成员
}
}
var name = "外部类"
}
class Outer2{
inner class MyInner{//内部类 用inner修饰类
fun printMessage(){
println("这是一个内部类")
println("外部类属性:${this@Outer2.name}") //不报错,内部类可以访问外部类成员
}
}
var name="外部类"
}
fun main() {
//嵌套类
val nested = Outer.MyNested()
nested.printMessage()
//内部类
val inner = Outer2().MyInner()
inner.printMessage()
}