중첩클래스와 inner 클래스 > IT 기술백서

클래스 내부에 자식 클래스를 가질 수 있다.

중첩클래스와 inner 클래스가 그것이다.

 

중첩클래스는 단순히 namespace 와 비슷하게 static 으로 내부에 존재하는 클래스이고

inner 클래스는 부모클래스를 인스턴스화 한 상태에서 접근 가능하며 부모의 변수를 참조할 수 있다.

 

사용예

[code]

fun main() {

Outer.Nested().introduce()

    

    // 에러: inner 클래스는 부모클래스 인스턴스 없이 접근할 수 없다

    // Outer.Inner().introduceInner() 

    

    val outer = Outer()

    val inner = outer.Inner()

    

    inner.introduceInner() 

    inner.introduceOuter() 

    

    outer.text = “Changed Outer class”

    inner.introduceOuter()

}

class Outer {

    var text = “Outer Class”

    // 중첩클래스

    class Nested {

        fun introduce() {

            println(“Nested Class”)

        }

    }

// 내부클래스

    inner class Inner {

        var text = “Innter Class”

        

        fun introduceInner() {

            println(text)

        }

        

        fun introduceOuter() {

            println([email protected]) // 부모 클래스에 접근하는 방법

        }

    }

}

[/code]

 

결과

[code]

Nested Class

Innter Class

Outer Class

Changed Outer class

[/code]

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤