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") }