기록
[코틀린/Kotlin] 중첩클래스와 내부클래스 본문
반응형
코틀린에서 지원하는 클래스 유형 중 클래스가 중첩되는 두 가지 유형을 알아보자.
기본적으로 클래스 안에 클래스를 하나 더 넣을 수 있는 중첩 클래스(Nested Class)를 지원한다.
중첩 클래스는 하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기 위해 만들어진 형식으로, 사용 할 때는 외부클래스.중첩클래스 형식으로 사용한다.
이때 중첩클래스 대신 내부 클래스(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() {
println(this@Outer.text)
}
}
}
Outer 클래스와 Inner 클래스에 같은 이름의 속성이나 함수가 있다면 this@OuterClass이름 으로 참조한다.
중첩클래스와 내부클래스는 클래스간의 연계성을 표현한다.
코드의 가독성 및 작성 편의성이 올라갈 수 있으므로 적절한 상황에서 사용하면 좋다.
https://www.youtube.com/watch?v=q7GV68jKLVM&list=PLQdnHjXZyYadiw5aV3p6DwUdXV2bZuhlN&index=24
위 강의를 보면서 개인적으로 공부한 내용을 정리하였습니다.
반응형
'[Study] > Kotlin' 카테고리의 다른 글
[코틀린/Kotlin] 컬렉션 2탄 - Set과 Map (0) | 2022.05.10 |
---|---|
[코틀린/Kotlin] Data Class와 Enum Class (0) | 2022.05.10 |
[코틀린/Kotlin] 함수의 argument를 다루는 법과 infix 함수 (0) | 2022.05.09 |
[코틀린/Kotlin] null처리 연산자와 동일성 확인 (0) | 2022.05.09 |
[코틀린/Kotlin] 문자열을 다루는 법 (0) | 2022.05.09 |