728x90
반응형
중첩클래스 (Nested Class)
: 하나의 클래스가 다른 클래스의 기능과 강하게 연관되어 있다는 의미를 전달하기 위해 만들어진 형식. 형태만 내부에 존재할 뿐 실질적으로는 서로 내용을 공유할 수 없다.
선언
class Outer{
class Nested{
}
}
사용
Outer.Nested()
내부 클래스 (Inner Class)
: 혼자서 객체를 만들 수는 없고 외부 클래스의 객체가 있어야만 생성과 사용 가능. 외부 클래스 객체의 속성이나 함수를 사용할 수 있다.
class Outer{
inner class Inner{
}
}
Outer 클래스와 Inner 클래스에 같은 이름의 속성이나 함수가 있다면 this@OuterClass이름으로 참조한다.
fun main(){
Outer.Nested().introduce() // Nested Class
val outer = Outer()
val inner = outer.Inner()
inner.introduceInner() // Inner Class
inner.introduceOuter() // Outer Class
outer.text = "Changed Outer Class"
inner.introduceOuter() // Changed Outer Class
}
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)
}
}
}
728x90
반응형
'Language > Kotlin' 카테고리의 다른 글
[Kotlin] 컬렉션(2) Set과 Map (0) | 2023.09.22 |
---|---|
[Kotlin] Data Class와 Enum Class (0) | 2023.09.21 |
[Kotlin] 함수의 다양한 기능 (0) | 2023.09.20 |
[Kotlin] null 처리와 동일성의 확인 (0) | 2023.09.19 |
[Kotlin] 문자열 함수 (0) | 2023.09.18 |