중첩 클래스

클래스는 다른 클래스안에 중첩 가능

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

내부 클래스에서의 this 의 모호성에 대해서는 한정된 this 식을 참조

무명내부 클래스

무명 내부 클래스의 인스턴스는 객체 식을 사용해서 작성

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

  override fun mouseEntered(e: MouseEvent) {
    // ...
  }
})

객체가 기능 Java 인터페이스(즉, 한 개의 추상 메소드를 가진 자바 인터페이스)의 인스턴인 경우는 인터페이스 타입이 접두어로 붙은 람다 표현식을 사용하여 객체를 만들 수 있다

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

results matching ""

    No results matching ""