[Java] μλ°μ μ μ(κΈ°μ΄νΈ) Ch6 μμ½
νΈμΆ μ€ν(call stack)
- μ€ν(stack) : λ°μ΄ λ§ν μμ. μμ 차곑차곑 μμΈλ€.
- νΈμΆ μ€ν(call stack) : λ©μλ μνμ νμν λ©λͺ¨λ¦¬κ° μ 곡λλ 곡κ°
λ©μλκ° νΈμΆλλ©΄ νΈμΆμ€νμ λ©λͺ¨λ¦¬ ν λΉ, μ’ λ£ μ ν΄μ
κΈ°λ³Έν λ§€κ°λ³μ(read only)
μ°Έμ‘°ν λ§€κ°λ³μ(read & write)
λ°ννμ μ΄ μ°Έμ‘°νμΈ κ²½μ° κ°μ²΄μ μ£Όμλ₯Ό λ°ννλ€.
μΈμ€ν΄μ€ = κ°μ²΄ = iv λ¬Άμ
μΈμ€ν΄μ€ λ³μ(iv) : κ°λ³μμ±, κ°μ²΄λ§λ€ λ§λ€μ΄μ§
ν΄λμ€ λ³μ(cv) : 곡ν΅μμ±, 1κ°λ§ 곡μ
λ§€κ°λ³μ : λ©μλλ₯Ό νΈμΆν μͺ½μμ μ€ κ°μ μ λ¬νλ μ€κ°μν , λ§€κ°μ²΄
λ©μλλ ν΄λμ€ μμμλ§ μμ±μ΄ κ°λ₯νλ€.
μΈμ€ν΄μ€ λ©μλ
- μΈμ€ν΄μ€ μμ± ν, 'μ°Έμ‘°λ³μ.λ©μλμ΄λ¦()'μΌλ‘ νΈμΆ
- μΈμ€ν΄μ€ λ©€λ²(iv, im)μ κ΄λ ¨λ μμ μ νλ λ©μλ
- λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μ(iv) μ¬μ© κ°λ₯
static λ©μλ(ν΄λμ€ λ©μλ)
- κ°μ²΄μμ±μμ΄ 'ν΄λμ€μ΄λ¦.λ©μλμ΄λ¦()'μΌλ‘ νΈμΆ
- μΈμ€ν΄μ€ λ©€λ²(iv, im)μ κ΄λ ¨μλ μμ μ νλ λ©μλ
- λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μ(iv) μ¬μ© λΆκ°
λμ μ°¨μ΄ : iv μ¬μ© μ¬λΆ
μΈμ€ν΄μ€ λ©€λ²(iv, im)μ μ¬μ©νμ§ μλ λ©μλμ staticμ λΆμΈλ€.
> λ©μλλ 곡ν΅μΌλ‘ μ¨μ staticμ λΆμ΄λ κ² μλλΌ ivλ₯Ό μ μ°λ©΄ staticμ λΆμ΄λ κ²μ΄λ€.
μ€λ²λ‘λ©
κ°μ μ΄λ¦μ λ©μλ μ¬λ¬κ° μ μ
<μ€λ²λ‘λ©μ΄ μ±λ¦½νκΈ° μν 쑰건>
- λ©μλ μ΄λ¦μ΄ κ°μμΌ νλ€.
- λ§€κ°λ³μμ κ°μ λλ νμ μ΄ λ¬λΌμΌνλ€.
- λ°ννμ μ μν₯μλ€.
μμ±μ
- μΈμ€ν΄μ€(κ°μ²΄=iv λ¬Άμ) μ΄κΈ°ν λ©μλ
- μ΄λ¦μ΄ ν΄λμ€ μ΄λ¦κ³Ό κ°μμΌ νλ€.
- 리ν΄κ°μ΄ μλ€(void μ λΆμ)
- λͺ¨λ ν΄λμ€λ λ°λμ μμ±μλ₯Ό κ°μ ΈμΌ νλ€.
κΈ°λ³Έ μμ±μ
- λ§€κ°λ³μκ° μλ μμ±μ
- ν΄λμ€μ μμ±μκ° νλλ μμ λλ§, μ»΄νμΌλ¬κ° κΈ°λ³Έ μμ±μλ₯Ό μλμΌλ‘ μΆκ°ν΄μ€λ€.
β μμ±μλ 무쑰건 κΈ°λ³ΈμΌλ‘ μμ±νλ€. μ»΄νμΌλ¬ μλμΆκ° κΈ°λ₯μ μμ‘΄νκΈ° μκΈ°β
μμ±μ this()
- μμ±μμμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ μ¬μ©(ν΄λμ€ μ΄λ¦ X this O)
- λ€λ₯Έ μμ±μ νΈμΆ μ 첫 μ€μμλ§ μ¬μ© κ°λ₯
μ½λμ μ€λ³΅μ μ κ±°νλ €κ³ μ¬μ©νλ€.
μ°Έμ‘°λ³μ this
- μΈμ€ν΄μ€ μμ μ κ°λ¦¬ν€λ μ°Έμ‘°λ³μ, μΈμ€ν΄μ€μ μ£Όμκ° μ μ₯λμ΄ μλ€.
- μΈμ€ν΄μ€ λ©μλ(μμ±μ ν¬ν¨)μμ μ¬μ© κ°λ₯
- μ§μλ³μ(lv)μ μΈμ€ν΄μ€ λ³μ(iv)λ₯Ό ꡬλ³ν λ μ¬μ©
- λͺ¨λ μΈμ€ν΄μ€ λ©μλμ μ§μλ³μλ‘ μ¨κ²¨μ§ μ±λ‘ μ‘΄μ¬νλ€.
thisμ this()λ λΉμ·νκ² μκ²Όμ λΏ μμ ν λ€λ₯Έ κ²μ΄λ€. thisλ 'μ°Έμ‘° λ³μ'μ΄κ³ this()λ 'μμ±μ'μ΄λ€.
λ©€λ²λ³μμ μ΄κΈ°ν
- μλμ΄κΈ°ν
- κ°λ¨μ΄κΈ°ν(λͺ μμ μ΄κΈ°ν - =)
- 볡μ‘μ΄κΈ°ν( {}, static {}, μμ±μ)
ν΄λμ€ λ³μ(cv) μ΄κΈ°ν μμ : ν΄λμ€κ° μ²μ λ©λͺ¨λ¦¬μ λ‘λ©λ λ λ¨ ν λ²
μΈμ€ν΄μ€ λ³μ(iv) μ΄κΈ°ν μμ : μΈμ€ν΄μ€κ° μμ±λ λ λ§λ€