반응형
클래스는 다른 클래스에 중첩 될 수 있습니다.
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}
val demo = Outer.Nested().foo() // == 2
내부 클래스
클래스는 외부 클래스의 멤버에 액세스 할 수 있도록
내부
클래스로 표시 될 수 있습니다 . 내부 클래스는 외부 클래스의 객체에 대한 참조를 전달합니다.
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 인터페이스 (즉, 단일 추상 메소드가있는 Java 인터페이스)의 인스턴스 인 경우 인터페이스의 유형이 접두어로 붙은 람다 표현식을 사용하여 객체를 만들 수 있습니다.
val listener = ActionListener { println("clicked") }
반응형
'프로그래밍 > kotlin' 카테고리의 다른 글
코틀린 - 오브젝트 표현식 및 선언 (0) | 2021.07.13 |
---|---|
코틀린 - Enum 클래스 (0) | 2021.07.13 |
코틀린 - 위임 (0) | 2021.07.13 |
코틀린 - 위임 프로퍼티 (0) | 2021.07.13 |
코틀린 - 제네릭 (0) | 2021.04.26 |