본문 바로가기

프로그래밍/kotlin

코틀린 - 중첩 클래스 및 내부 클래스

반응형

클래스는 다른 클래스에 중첩 될 수 있습니다.

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