美文网首页
Kotlin面向对象之嵌套类(Nested Classes)

Kotlin面向对象之嵌套类(Nested Classes)

作者: 已迁至知乎_此不再维护 | 来源:发表于2017-05-27 08:43 被阅读0次

一个类可以嵌套在其他类的内部:

class Outer {
    private val bar: Int = 1
    class Nested {
        fun foo() = 2
    }
}

val demo = Outer.Nested().foo() // == 2

内部类(Inner classes)

类可以被标记为inner以能够访问外部类的成员。 内部类可以引用外部类的对象:

class Outer {
    private val bar: Int = 1
    inner class Inner {
        fun foo() = bar
    }
}

val demo = Outer().Inner().foo() // == 1

匿名内部类(Anonymous inner classes)

匿名内部类的实例使用对象表达式来创建:

window.addMouseListener(object: MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) {
        // ...
    }
                                                                                                            
    override fun mouseEntered(e: MouseEvent) {
        // ...
    }
})

如果对象是Java函数式接口的实例(即具有单个抽象方法的Java接口),则可以使用前缀为接口类型的lambda表达式来创建它。

val listener = ActionListener { println("clicked") }

相关文章

网友评论

      本文标题:Kotlin面向对象之嵌套类(Nested Classes)

      本文链接:https://www.haomeiwen.com/subject/eliffxtx.html