1、嵌套类
嵌套在其他类(接口)中的类;有类与接口的组合都是可能的:可以将接口嵌套在类中、将类嵌套在接口中、将接口嵌套在接口中
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}
val demo = Outer.Nested().foo() // == 2
interface OuterInterface {
class InnerClass
interface InnerInterface
}
class OuterClass {
class InnerClass
interface InnerInterface
}
2、内部类
标记为 inner
的嵌套类,会带有一个对外部类的对象的引用,能够访问其外部类的成员
class Outer {
private val bar: Int = 1
inner class Inner { // 具名内部类 Inner
fun foo() = bar
}
}
val demo = Outer().Inner().foo() // == 1
window.addMouseListener(object : MouseAdapter() { // 匿名内部类对象 object
override fun mouseClicked(e: MouseEvent) { …… }
override fun mouseEntered(e: MouseEvent) { …… }
})