본문 바로가기

Kotlin

Kotlin - 중첩 클래스, 내부 클래스 (Nested and inner classes)

https://kotlinlang.org/docs/nested-classes.html

 

Nested and inner classes | Kotlin

 

kotlinlang.org

 

인터페이스나 클래스 내부에 중첩해서 인터페이스나 클래스를 선언 할 수 있다.

interface OuterInterface {
    class InnterClass
    interface InnerInterface
}


class OuterClass {
    class InnerClass
    interface InnerInterface
}

 

Inner classes

중첩 클래스는 inner 로 표시되고, outer 클래스의 멤버로 접근 가능하다. 

class Outer {
    private val bar: Int = 1
    inner class Inner {
        fun foo() = bar
    }
}

fun main() {
    println(Outer().Inner().foo())
    // 1
}

 

익명 내부 클래스 (Anonymous inner classes)

object 표현식을 이용해서 익명 내부 클래스의 인스턴스를 생성 할 수 있다.

interface SampleInterface {
    fun hello()
    fun hello2()
}

fun main() {
    executeHello(object: SampleInterface {
        override fun hello() {
            println("Hello1")
        }

        override fun hello2() {
            println("Hello2")
        }
    })
}
반응형