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

2017-05-27  本文已影响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") }
上一篇下一篇

猜你喜欢

热点阅读