Kotlin/포스팅

코틀린 내포된 클래스

짜집퍼박사(짜박) 2023. 12. 30. 10:49

코틀린에서는 내포된 클래스(Inner Class)를 사용하여 클래스 내부에 다른 클래스를 정의할 수 있습니다. 내포된 클래스는 외부 클래스의 인스턴스에 종속되며, 내부 클래스는 외부 클래스의 속성에 직접 접근할 수 있습니다. 이를 통해 논리적인 그룹화와 코드 구조를 개선할 수 있습니다.

내포된 클래스는 크게 두 가지 종류가 있습니다: 멤버 내포된 클래스(Member Inner Class)와 스태틱 내포된 클래스(Static Inner Class).

 

1. 멤버 내포된 클래스 (Member Inner Class)

멤버 내포된 클래스는 외부 클래스의 인스턴스에 종속되며, 내부 클래스는 외부 클래스의 속성에 직접 접근할 수 있습니다.

class OuterClass {
    private val outerProperty: Int = 10

    inner class InnerClass {
        fun accessOuterProperty() {
            println(outerProperty)
        }
    }
}

fun main() {
    val outerInstance = OuterClass()
    val innerInstance = outerInstance.InnerClass()
    innerInstance.accessOuterProperty()
}

- InnerClass는 OuterClass의 인스턴스에 종속되어 생성됩니다.
- inner 키워드는 내포된 클래스를 멤버 내포된 클래스로 지정합니다.
- 외부 클래스의 인스턴스를 통해 내부 클래스의 인스턴스를 생성할 수 있습니다.

 

2. 스태틱 내포된 클래스 (Static Inner Class)

스태틱 내포된 클래스는 외부 클래스의 인스턴스에 종속되지 않으며, 일반적인 중첩 클래스와 유사합니다.

class OuterClass {
    private val outerProperty: Int = 10

    class StaticInnerClass {
        fun accessOuterProperty() {
            // 외부 클래스의 인스턴스에 직접 접근할 수 없음
            // println(outerProperty) // 오류 발생
        }
    }
}

fun main() {
    val innerInstance = OuterClass.StaticInnerClass()
    innerInstance.accessOuterProperty()
}

- 스태틱 내포된 클래스는 inner 키워드 없이 정의됩니다.
- 외부 클래스의 인스턴스에 직접 접근할 수 없습니다.

 

사용 시나리오

- 멤버 내포된 클래스는 외부 클래스의 상태에 의존해야 할 때 사용됩니다.
- 스태틱 내포된 클래스는 외부 클래스의 상태에 의존하지 않아도 되며, 일반적으로 독립적인 유틸리티 클래스나 헬퍼 클래스로 사용됩니다.

 

내포된 클래스를 사용함으로써 코드를 논리적으로 그룹화하고 캡슐화할 수 있으며, 코드 구조를 더욱 명확하게 만들 수 있습니다.

'Kotlin > 포스팅' 카테고리의 다른 글

코틀린 널 가능성  (0) 2023.12.30
코틀린 지역 클래스  (0) 2023.12.30
코틀린 멤버 가시성  (0) 2023.12.29
코틀린 생성자  (0) 2023.12.25
코틀린 클래스 내부 구조  (0) 2023.12.25