[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 공식 문서를 참고하세요.