[kotlin] 코틀린 중첩 클래스와 내부 클래스

코틀린에서는 중첩 클래스와 내부 클래스를 사용하여 클래스를 중첩시킬 수 있습니다. 이러한 방법을 사용하면 코드의 구조를 더 명확하게 만들고 관련된 클래스를 논리적으로 그룹화할 수 있습니다.

중첩 클래스 (Nested Class)

중첩 클래스는 외부 클래스의 멤버에 접근할 수 없으며, 기본적으로 자바의 static 중첩 클래스와 동일한 동작을 합니다. 중첩 클래스는 다음과 같이 선언할 수 있습니다:

class OuterClass {
    class NestedClass {
        // 중첩 클래스의 내용
    }
}

내부 클래스와 달리 중첩 클래스는 외부 클래스의 인스턴스에 접근할 수 없습니다. 이것은 외부 클래스의 인스턴스에 종속되지 않는 독립적인 클래스로 동작합니다.

내부 클래스 (Inner Class)

내부 클래스는 외부 클래스의 멤버에 접근할 수 있습니다. 즉, 내부 클래스는 외부 클래스의 인스턴스에 대한 참조를 유지합니다. 내부 클래스는 다음과 같이 선언할 수 있습니다:

class OuterClass {
    inner class InnerClass {
        // 내부 클래스의 내용
    }
}

내부 클래스를 선언할 때 inner 키워드를 사용하여 내부 클래스임을 명시합니다. 내부 클래스에서는 외부 클래스의 멤버에 접근할 수 있으며, 단순히 this@OuterClass와 같이 외부 클래스의 인스턴스를 참조하여 접근할 수 있습니다.

사용 예제

fun main() {
    val outer = OuterClass()
    val nested = OuterClass.NestedClass()
    val inner = outer.InnerClass()  // 내부 클래스의 인스턴스 생성

    // 중첩 클래스는 외부 클래스의 인스턴스에 종속되지 않으므로 바로 생성 가능
    // 내부 클래스의 인스턴스를 생성하기 위해서는 외부 클래스의 인스턴스를 먼저 생성해야 함
}

이와 같이 Kotlin에서 중첩 클래스와 내부 클래스를 사용하여 코드를 조직화하고 적절하게 그룹화하여 유지보수성을 높일 수 있습니다.

더 많은 정보는 Kotlin 공식 문서를 참고하세요.