内部类也叫做嵌套类,在Java里是一个被大家经常使用到的东西。内部类除了匿名内部类外还分为三种,一种是可以自由访问外部类成员变量和方法的成员内部类,一种是可以被独立构造实例且和外部类完全剥离的静态内部类,一种是作用域和生命周期都只处在一个方法中的方法内部类,但这种内部类我们不讨论。
Kotlin的大部分用法和Java差不多,可用Kotlin按照Java的写法来写内部类,你会发现不管是直接引用外部类的成员和方法还是用this@
去显式引用外部类的成员和方法,都不管用,为嘛咧?
因为Kotlin默认内部类是静态内部类,和Java相反。
接下来就看看Kotlin中的两种静态类的写法,假设我们外部类叫做Outer
,内部类叫做Inner
静态内部类
/**
* 代码还未验证
*/
class Outer {
// 默认Inner类为静态内部类
class Inner {}
}
成员内部类
关键在于需要用inner关键字来修饰内部类的声明,才能让Kotlin中默认的静态内部类变为非静态的成员内部类
/**
* 代码还未验证
*/
class Outer {
val name = "Outer"
inner class Inner {
fun printParent() {
// 访问外部类成员时指明类作用域
println(this@Outer.name)
}
}
}
下次有机会说说匿名内部类的写法= ̄ω ̄=