Nested and inner classes
클래스 내부에서 클래스를 선언하는 것이 가능하다. Interface도 클래스처럼 생각하고 사용하면 된다.
class Outer {
private val bar: Int = 1
class Nested { fun foo() = 2}
}
interface OuterInterface {
class InnerClass
interface InnerInterface
}
class OuterClass {
class InnerClass
interface InnerInterface
}
이때 한 클래스의 소속이라는 것을 더 강조해주고 싶다면 inner 를 사용한다.
inner class에서는 outer class의 속성에 접근하는 것이 가능하다.
class Outer {
private val bar: Int = 1
inner class Nested { val o = this@Outer } // inner 사용법
}
객체의 속성에 Anonymous inner classes를 만들어 할당하고싶다면 object expression을 사용한다.
window.addMouseListener(object : MouseAdapter() {
override fun mouseClicked(e: MouseEvent) { ... }
override fun mouseEntered(e: MouseEvent) { ... }
})
// 이런게 나와도 놀라지말자. Primary constructor에 object로 선언해줬을 뿐이다.
'프로그래밍 언어 > Kotlin' 카테고리의 다른 글
[JUnit] assert 함수 종류 (0) | 2022.10.05 |
---|---|
[IntelliJ] JUnit5 라이브러리 maven으로 적용하기 (0) | 2022.10.05 |
Kotlin의 class(4) - Enum class (1) | 2022.10.03 |
Kotlin의 class(2) - abstract class와 interface (0) | 2022.10.03 |
Kotlin의 class(1) - 생성 및 상속 (1) | 2022.10.03 |