Inner class, Nested Class

0

코틀린

목록 보기
10/11

중첩 클래스는 하나의 클래스가 다른 클래스와 강하게 연관되어있다는 의미를 전달하기 위해 만들어진 형식

코틀린에서 한 클래스 안에 다른 클래스를 정의하면 기본적으로 NestedClass(중첩클래스)가 되고 내부클래스로 만들고 싶다면 inner키워드를 이용해야 한다.

// nested class 중첩 클래스
class Outer {
    private val bar: Int = 1
    class Nested {
        fun foo() = 2
    }
}

val demo = Outer.Nested().foo() // == 2

위와 같이 중첩 클래스에서는 외부 클래스를 참조하지 않기 때문에 Outer.Nested().foo()의 값이 2가 된다.

// inner class 내부 클래스
class Outer {
    private val bar: Int = 1
    inner class Inner {
        fun foo() = bar
    }
}

val demo = Outer().Inner().foo() // == 1

반면, 내부 클래스에서는 외부 클래스를 항상 참조하고있기 떄문에 결과 값이 1이 된다.

profile
러닝커브를 따라서 등반중입니다.

0개의 댓글