Nested 클래스
class Outer {
private val outerField: Int = 5
class Nested {
fun nestedMethod() = "Hello from Nested class"
}
}
fun main() {
val nested = Outer.Nested() // 외부 클래스의 인스턴스 없이 중첩 클래스의 인스턴스 생성
println(nested.nestedMethod())
}
중첩 클래스는 외부 클래스의 인스턴스와 독립적으로 존재합니다. 즉, 중첩 클래스는 외부 클래스의 인스턴스에 접근할 수 없습니다. 코틀린에서 중첩 클래스는 기본적으로 정적 클래스처럼 동작합니다.
Nested 클래스는 Outer 클래스에 중첩되어 있지만, Outer 클래스의 outerField에 접근할 수 없습니다. Nested 클래스는 Outer 클래스의 인스턴스 없이 직접 인스턴스화할 수 있습니다.
Inner 클래스
class Outer {
private val outerField: Int = 5
inner class Inner {
fun innerMethod() = "Hello from Inner class, outerField = $outerField"
}
}
fun main() {
val outer = Outer()
val inner = outer.Inner() // 외부 클래스의 인스턴스를 통해 내부 클래스의 인스턴스 생성
println(inner.innerMethod())
}
내부 클래스는 외부 클래스의 인스턴스에 대한 참조를 가지고 있어 외부 클래스의 멤버에 접근할 수 있습니다. 이를 위해 inner 키워드를 사용하여 내부 클래스를 정의합니다.
Inner 클래스는 Outer 클래스의 outerField에 접근할 수 있습니다. Inner 클래스는 외부 클래스의 인스턴스를 통해 인스턴스화되어야 합니다.
출처
W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.
www.w3schools.com
Classes | Kotlin
kotlinlang.org
'개발 언어 (Language) > Kotlin' 카테고리의 다른 글
코틀린 접근 제한자 (0) | 2024.08.03 |
---|---|
코틀린에서의 인터페이스 (0) | 2024.07.31 |
코틀린에서의 속성 (0) | 2024.07.31 |
코틀린에서의 상속 (0) | 2024.07.29 |
코틀린에서의 멤버함수(클래스 함수) (0) | 2024.07.29 |