Access Control (μ κ·Ό μ μ΄)
μ κ·Όμ μ΄λ 'νμΌ κ° λλ λͺ¨λ κ°μ μ κ·Όμ μ νν μ μλ κΈ°λ₯' μ λλ€.
import ν λͺ¨λμμ μ κ·Όν μ μλ κΈ°λ₯μ μ ννλ μ©λλ‘ μ¬μ©λ©λλ€.
μ€μννΈμ μ κ·Όμ μ΄λ λͺ¨λκ³Ό μμ€νμΌμ κΈ°λ°μΌλ‘ μ€κ³λμμ΅λλ€.
λͺ¨λμ λ°°ν¬ν μ½λμ λ¬Άμ λ¨μ μ λλ€.
ν΅μ νλμ νλ μμν¬, λΌμ΄λΈλ¬λ¦¬, λλ μ ν리μΌμ΄μ μ΄ λͺ¨λ λ¨μκ° λ©λλ€.
μμ€νμΌμ νλμ μ€μννΈ μμ€μ½λ νμΌμ μλ―Έν©λλ€.
ν€μλμ λ°λΌ μ κ·Όν μ μλ λ²μκ° λ¬λΌμ§λλ°, 4κ°μ§λ‘ λλ μ μμ΅λλ€.
1. μμ μ΄ κ΅¬νλ κΈ°λ₯ μ μ λ΄λΆ
2. μμ μ΄ κ΅¬νλ νμΌ λ΄λΆ
3. μμ μ΄ κ΅¬νλ νμΌμ΄ ν¬ν¨λ λͺ¨λ λ΄λΆ
4. λͺ¨λμ importν λ λ€λ₯Έ λͺ¨λ λ±μ μΈλΆ
ν€μλ | λ²μ | λΉκ³ |
open | λͺ¨λ μΈλΆκΉμ§ κ°λ₯ | ν΄λμ€μμλ§ μ¬μ© κ°λ₯ |
public | λͺ¨λ μΈλΆκΉμ§ κ°λ₯ | |
Internal | λͺ¨λ λ΄λΆ | |
fileprivate | νμΌ λ΄λΆ | |
private | κΈ°λ₯ μ μ λ΄λΆ |
open
ν΄λμ€μμλ§ μ¬μ© κ°λ₯ν μ κ·Ό μ μ΄ ν€μλ μ λλ€.
open μ κ·Ό μμ€μΌλ‘ μ§μ λ ν΄λμ€λ μμ μ΄ κ΅¬νλ λͺ¨λ λ°μ λ€λ₯Έ λͺ¨λμμ μμν μ μκ³ , μ¬μ μ λ μ μμ΅λλ€.
internal
μ κ·Ό μμ€μ λͺ μμ (explicitly) μΌλ‘ μ€μ νμ§ μμλ€λ©΄, μμμ (implicitly) μΌλ‘ μλμΌλ‘ μ€μ λλ μ κ·Ό μμ€μ λλ€.
internal λ‘ μ€μ λ κ°μ²΄λ, κ·Έ λͺ¨λμ κ°μ Έλ€ μ°λ λ€λ₯Έ λͺ¨λμμλ μ κ·Όν μ μμ΅λλ€.
private
κ°μ₯ μ νμ μΈ λ²μλ‘, κ·Έ κΈ°λ₯μ μ μνκ³ κ΅¬νν λ²μ λ΄μμλ§ μ¬μ©ν μ μμ΅λλ€.
λ²μλΌλ λ¨μ΄λ₯Ό λΈλ‘μΌλ‘ μΉνν΄μ μ΄ν΄ν΄λ λ¬΄λ¦¬κ° μλ κ² κ°μ΅λλ€.
μ μλ λΈλ‘ μ΄μΈμ extension μμκΉμ§λ§ μ κ·Όμ΄ κ°λ₯ν©λλ€.
λλ¨Έμ§ λ ν€μλ ( fileprivate, public ) λ μμ νλ§μΌλ‘λ μΆ©λΆν μ΄ν΄ν μ μκΈ° λλ¬Έμ μλ΅νμμ΅λλ€.
μ°Έκ³ μ¬ν
'μμ μμλ³΄λ€ νμμμκ° λ λμ μ κ·Ό μμ€μ κ°μ§ μ μμ΅λλ€.'
μλ₯Ό λ€μ΄, private μΌλ‘ μ μλ ν΄λμ€ λ΄λΆμμ fileprivate μ΄μμ μ κ·Όμ±μ κ°μ§ μ κ·Όμ μ΄λ₯Ό μ μν μ μμ΅λλ€.
μλ°ν μ΄μΌκΈ°νλ©΄ μ μΈμ κ°λ₯νμ§λ§, κ°μ private μΌλ‘ μ·¨κΈλ©λλ€.
λ!