[Kotlin] 중첩 클래스와 내부 클래스 설명 & 예제
- Language/Kotlin
- 2021. 2. 12.
728x90
클래스 안에서 클래스가 중첩되는 두가지 유형
중첩 클래스(Nested Class)
class Outer {
class Nested {
}
}
- 하나의 클래스가 다른 클래스의 기능과 강하게 연관 되어 있다는 의미를 전달하기 위해 만들어진 형식으로 사용할 때는
Outer.Nested()
와 같이 사용 - 외부 클래스의 내용을 공유 할 수 없음(별개)
내부 클래스(Inner class)
class Outer {
inner class Inner {
}
}
- 혼자서 객채를 만들 수는 없고 외부 클래스의 객체가 있어야지 생성과 사용이 가능한 클래스를 말함
- 외부 클래스의 속성과 함수의 사용이 가능
예제
fun main() {
Outer.Nested().introduce()
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 = "Inner Class"
fun introduceInner() {
println(text)
}
fun introduceOuter() {
//Inner, Outer 에 같은 이름의 속성이나 함수가 있을 경우 this@OuterClassName 로 참조 하면
println(this@Outer.text)
}
}
}
중첩 클래스와 내부클래스는 클래스간의 연계성을 표현하여 코드의 가독성 및 편의성이 증가 할 수 있으므로
적절한 상황에서 사용하는 것이 좋다.
728x90
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] Set & Map 설명 & 예제 (0) | 2021.02.15 |
---|---|
[Kotlin] Data Class와 Enum Class 설명 & 예제 (0) | 2021.02.15 |
[Kotlin] 함수의 argument 다루기 & infix 함수 설명 & 예제 (0) | 2021.02.12 |
[Kotlin] null 값을 처리하는 방법, 동일여부 확인 설명 & 예제 (0) | 2021.02.11 |
[Kotlin] 문자열을 다루는 여러가지 방법 설명 & 예제 (0) | 2021.02.11 |