一個類可以嵌套在其他類的內部:
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") }