코틀린 언어 정리 2-9

Nested class

개요

다른 클래스의 내부에 선언된 클래스를 말합니다. 이때 내부에 선언된 클래스는 자신을 포함하는 클래스의 멤버에 접근하지 않아야 합니다.


예제

class Outer {

   private val bar: Int = 1

   class Nested {

       fun foo() = 2

   }

}


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

Outer 클래스 내부에 Nested 클래스를 선언했습니다. 이 경우 외부에서 Nested 클래스를 접근하려면 Outer 클래스( "Outer." )를 통해 접근해야 합니다.



8. Inner class

개요

다른 클래스의 내부에 선언된 클래스이며 자신의 외부 클래스의 멤버를 참조하는 클래스입니다.


예제

class Outer {

   private val bar: Int = 1

   inner class Inner {

       fun foo() = bar

   }

}


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

Outer 클래스 내부에 Inner 클래스를 선언했습니다. Inner 클래스 내부에서 Outer클래스의 멤버 프로퍼티인 bar를 참조하고 있습니다. 그리고 외부에서 Inner 클래스 접근 시 Outer 클래스가 아닌 Outer 객체( "Outer()." )를 통해 접근합니다. Nested class와 다르게 Inner클래스에서는 Outer 클래스의 멤버를 참조하므로 Outer 객체가 생성되기 전에는 Inner 클래스를 참조할 수 없습니다.



+ Recent posts