Nested Class
μ€μ²© (nested) ν΄λμ€λ ν΄λμ€ μμ μλ ν΄λμ€λ‘ μ μ μΈ μ€μ²© ν΄λμ€λ₯Ό λ§νλ€. μλ μ½λμμ λ§νλ Outer Class λ΄λΆμ μλ Nested Class μ κ°μκ±Έ λ§νλ€.
class OuterClass {
// statement
class NestedClass {
// statement
}
}
μ€μ²© ν΄λμ€λ ν¬κ² λ μ’ λ₯λ‘ λλ μ μλ€.
- Static Nested Class (μ μ μ€μ²© ν΄λμ€)
- Non-Static Nested Class (λΉ μ μ μ€μ²© ν΄λμ€ :: Inner Class)
Static Nested Class (μ μ μ€μ²© ν΄λμ€)
μ μ μ€μ²© ν΄λμ€μ νΉμ§μ λ€μκ³Ό κ°λ€.
- Outer Class μ μ§μλ³μ μ κ·Όμ΄ λΆκ°λ₯
- μΈλΆμμ
OuterClass.NestedClass
λ‘ κ°μ²΄ μμ± κ°λ₯
μλ°μμ μ¬μ©ν κ²½μ° μλμ κ°μ΄ μ¬μ©
class OuterClass {
// statement
static class StaticNestedClass {
// statement
}
}
μ½νλ¦°μμ μ¬μ©ν κ²½μ° μλμ κ°μ΄ μ¬μ©
class OuterClass {
// statement
class StaticNestedClass {
// statement
}
}
μ μ€μΌλ ν€μ½λμμ ꡬν λ΄μ©μ μΆκ°νλ©΄ μλμ κ°λ€.
class OuterClass {
val outerValue = 10
class StaticNestedClass {
private val innerValue = 20
fun printItems() {
println("value: $innerValue")
}
}
}
fun main(args: Array<String>) {
val nested = OuterClass.StaticNestedClass()
nested.printItems()
}
Non-Static Nested Class
λΉ μ μ μ€μ²© ν΄λμ€λ μΌλ°μ μΌλ‘ Inner Class λΌκ³ νλ©° νΉμ§μ λ€μκ³Ό κ°λ€.
- OuterClass μ μ§μλ³μ μ κ·Όμ΄ κ°λ₯
- μΈλΆμμ
OuterClass.NestedClass
λ‘ κ°μ²΄ μμ±μ΄ λΆκ°λ₯
μλ°μ μ¬μ©ν κ²½μ° μλμ κ°μ΄ μ¬μ©
class OuterClass {
// statement
class InnerClass {
// statement
}
}
μ½νλ¦°μμλ μλμ κ°μ΄ μ¬μ©
class OuterClass {
// statement
inner class InnerClass {
// statement
}
}
μ½νλ¦°μμλ inner class
λ‘ μ¬μ©νλ €λ©΄ inner
ν€μλλ₯Ό κΌ λΆμ¬μ€μΌ νλ€.
μ μ€μΌλ ν€ μ½λμμ ꡬν μ½λλ₯Ό μΆκ°νλ©΄ λ€μκ³Ό κ°λ€.
class OuterClass {
val outerValue = 10
inner class InnerClass {
private val innerValue = 20
fun printItems() {
println("inner: $innerValue, outer: $OuterValue")
}
}
fun printItems() {
val inner = InnerClass()
inner.printItems()
}
}
fun main(args: Array<String>) {
val outer = OuterClass()
outer.printItems()
}
μ°Έκ³ μλ£