728x90
μ½νλ¦°μ΄ μ§μνλ ν΄λμ€ μ ν μ€ ν΄λμ€ μμ ν΄λμ€κ° μ€μ²©λλ μ νμ μ€μ²© ν΄λμ€μ λ΄λΆ ν΄λμ€ λκ°μ§λ€.
μ€μ²© ν΄λμ€(Nested Class)
- νλμ ν΄λμ€κ° λ€λ₯Έ ν΄λμ€μ κΈ°λ₯κ³Ό κ°νκ² μ°κ΄λμ΄ μλ€λ μλ―Έλ₯Ό μ λ¬νκΈ° μν΄ λ§λ€μ΄μ§ νμμΌλ‘
- μ¬μ©ν λλ "(μΈλΆν΄λμ€ μ΄λ¦).(μ€μ²©ν΄λμ€ μ΄λ¦)" μΌλ‘ μ¬μ©νλ€.
- ννλ§ λ΄λΆμ μ‘΄μ¬ν λΏ μ€μ§μ μΌλ‘λ μΈλΆμ μ€μ²© ν΄λμ€ μλ‘ λ΄μ©μ 곡μ ν μ μλ λ³κ°μ ν΄λμ€λ€.
λ΄λΆ ν΄λμ€
- μ€μ²© ν΄λμ€ λμ λ΄λΆ ν΄λμ€λ₯Ό μ¬μ©ν μ μλ€.
- μ€μ²© ν΄λμ€μ "inner"λΌλ ν€μλλ₯Ό λΆμ΄λ©΄ λλ€.
- νΌμμ κ°μ²΄λ₯Ό λ§λ€ μ μκ³ μΈλΆ ν΄λμ€μ κ°μ²΄κ° μμ΄μΌλ§ μμ±κ³Ό μ¬μ©μ΄ κ°λ₯ν ν΄λμ€λ€.
- κ·Έλμ μΈλΆ ν΄λμ€μ μμ±κ³Ό ν¨μμ μ¬μ©μ΄ κ°λ₯νλ€.
μμ
fun main(){
Outer.Nested().introduce()
var outer = Outer()
val inner = outer.Inner()
inner.introduceInner()
inner.introduceOuter()
outer.text = "Changed Outer Class" // 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)
}
}
}
μΆλ ₯
Nested Class
Inner Class
Outer Class
Changed Outer Class
μμ°ν° ν΄λμ€λ μ΄λ ν΄λμ€μ κ°μ μ΄λ¦μ μμ±μ΄λ ν¨μκ° μλ€λ©΄ 'this@(μμ°ν° ν΄λμ€μ μ΄λ¦)"μΌλ‘ μ°Έμ‘°νλ©΄ λλ€.
π‘μ€μ²© ν΄λμ€μ λ΄λΆ ν΄λμ€λ ν΄λμ€κ°μ μ°κ³μ±μ νννμ¬ μ½λμ κ°λ μ±μ΄λ μμ± νΈμμ±μ΄ ν₯μλλ€.
728x90
'μλλ‘μ΄λπ€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ½νλ¦°] Set & Map (0) | 2024.07.08 |
---|---|
[μ½νλ¦°] Data Class & Enum Class (1) | 2024.07.08 |
[μ½νλ¦°] ν¨μμ λ€μν κΈ°λ₯ (0) | 2024.07.07 |
[μ½νλ¦°] null μ²΄ν¬ & λ³μ λμΌμ± μ²΄ν¬ (0) | 2024.07.03 |
[μ½νλ¦°] λ¬Έμμ΄μ λ€λ£¨λ μ¬λ¬κ°μ§ λ°©λ² (0) | 2024.07.02 |