본문 바로가기
kotlin

Kotlin - Nested / Inner class

by Gil 2019. 8. 25.
728x90

1. Nested class

Nested: 내포된 이라는 뜻으로, Class 안에 있는 일반 Class 가 있는 경우를 말한다. 

class Outer {
    class Nested {
        val a = 1
    }
}    

java 로 Decompile해보면 아래와 같다. 

static 처리가 되어 있어서 아래와 같이 Nested 클래스를 호출할 수 있다. 

Outer.Nested()

 

※ 주의 사항

Kotlin에서 Nested Class는 내부적으로 Static 처리를 한다는 것이다. 
Java에서 Nested Class를 선언하면 Static 이 아니란 걸 주의하면 된다. 
(안드 개발시 Kotlin과 Java를 왔다갔다 하면서 사용할 일이 많아서 둘다 알아야 한다...)


2. Inner class

Java에서 Nested Class 선언하는 것과 비슷하다.

즉, static 처리를 하지 않기 위해 Inner 를 사용한다는 것

class Outer {
    inner class Nested {
        val a = 1
    }
}    

사용은 아래와 같다. 

Outer().Inner()