inner Class 를 통해서 알아야할 것 : Nested class 와 모습은 같지만( 아우터 클래스 내부에 중첩적으로 클래스가 선언되어서 사용되고있다.) Inner class 의 인스턴스는 (Nested class 와는 다르게) Outer class 의 인스턴스에 완전히 소속된다.

내부 클래스의 인스턴스를 생성하러면

class Outer {
    val outerVal = "test"
    fun outerPrint() = print(outerVal)
    
    inner class NestedClass {
        fun hello() {
            val helloFunInner = this@Outer.outerVal
            println(helloFunInner)
        }
    }
}

fun main(args: Array<String>) {
    val instance: Outer = Outer()
    val innerInstance : Outer.NestedClass = instance.NestedClass()
    innerInstance.hello()
}
0