[Kotlin] 内部类

内部类也叫做嵌套类,在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([email protected])
        }

    }
}

下次有机会说说匿名内部类的写法= ̄ω ̄=

你可能感兴趣的:([Kotlin] 内部类)