μλ νμΈμ~
μ€λμ μ κ·Όμ μ΄μμ λν΄μ μ 리ν΄λ³΄λ €κ³ ν©λλ€.
μ κ·Όμ μ΄μ
μμ μ€λͺ ν λͺ¨λκ³Ό μμ€νμΌλ±μ μμλ€μμ μ κ·Όμ μ μ΄νκΈ° μν΄ μ¬μ©νλ©° κ°μ²΄μ§ν₯μ νΉμ± μ€ νλμΈ μλνλ₯Ό ꡬνν μ μκ² ν΄ μ€λλ€.
μ κ·Όμ μ΄μμ μ’ λ₯
μ κ·Όμ μ΄μλ μ΄ 5κ°μ§λ₯Ό μ 곡νκ³ μμ΅λλ€.
1. open
open μ κ·Ό μ μ΄μλ κ°μ₯ λμ μμ€μ μ κ·Ό μ μ΄μλ‘, λ€λ₯Έ λͺ¨λμμλ ν΄λΉ ν΄λμ€λ λ©μλλ₯Ό μλΈν΄λμ±(subclassing)νκ±°λ μ€λ²λΌμ΄λ©(overriding)ν μ μμ΅λλ€. λ³΄ν΅ μΈλΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ§λ€κ³ μ¬μ©ν λ μ μ©ν©λλ€. openμΌλ‘ μ μΈλ ν΄λμ€λ λ©μλλ₯Ό μμνκ±°λ μ¬μ μν΄μ μ¬μ©ν μ μκΈ° λλ¬Έμ λλ€.
open class Animal {
open func bark() {
print("μΌλ₯΄λ μΌλ₯΄λ ")
}
}
class Dog: Animal {
override open func bark() {
print("λ©λ©")
}
}
2. public
public μ κ·Ό μ μ΄μλ κΈ°λ³Έμ μΌλ‘ openκ³Ό μ κ·Ό μ μ΄ μ λκ° κ°μΌλ λ€λ₯Έ λͺ¨λμμ μλΈν΄λμ±νκ±°λ μ€λ²λΌμ΄λ©ν μλ μμ΅λλ€.
public class Animal {
public func bark() {
print("μΌλ₯΄λ μΌλ₯΄λ ")
}
}
// λ€λ₯Έ λͺ¨λμμ μμ±ν μ½λλΌλ©΄ μ¬μ μ λΆκ°λ₯
public class Dog: Animal {
override public func bark() { // Error
print("λ©λ©")
}
}
3. internal
internal μ κ·Ό μ μ΄μλ κ°μ λͺ¨λ λ΄μμλ μ΄λμλ μ§ ν΄λΉ μμλ€μ μ¬μ©ν μ μμ΅λλ€. κ·Έλ¬λ λͺ¨λ μΈλΆμμλ μ¬μ©ν μ μμ΅λλ€.
internal class Cat: Animal {
override internal func bark() {
print("μΌμμΉ")
}
}
// μΈλΆ λͺ¨λμ΄λΌλ©΄
let cat: Cat = Cat() // Error
4. fileprivate
fileprivate μ κ·Ό μ μ΄μλ κ°μ νμΌ λ΄μμλ§ ν΄λΉ μμλ€μ μ¬μ©ν μ μμ΅λλ€
fileprivate class Dog {
fileprivate func bark() {
print("λ©λ©")
}
}
fileprivate let dog = Dog() // λ€λ₯Έ μμ€ νμΌμ΄λΌλ©΄ Error
dog.bark()
5. private
private μ κ·Ό μ μ΄μλ ν΄λΉ μμκ° μ μΈλ λΈλ‘ λ΄μμλ§ μ¬μ©ν μ μμ΅λλ€.
class Company {
private let developer = Developer()
func writeCode() {
developer.writeCode()
}
}
let company: Company = Company()
company.developer.? // μ κ·Ό λΆκ°λ₯ Error
μ κ·Ό μ μ΄μλ λͺ¨λ, μμ€ νμΌ, ν΄λμ€, ꡬ쑰체, μ΄κ±°ν, μμ±, ν¨μ, λ©μλ λ± λ€μν μμμ μ μ©λ©λλ€.
κ°κ°μ μμλ³λ‘ μ κ·Όμ μ΄μκ° μ΄λ»κ² μ μ©λλμ§ μμλ³΄κ² μ΅λλ€.
λͺ¨λ
λͺ¨λμ μ»΄νμΌκ³Ό λ§ν¬ κ³Όμ μμ μ¬μ©λ©λλ€. νλ‘μ νΈ λ΄μμ κ°κ°μ νλ μμν¬, λΌμ΄λΈλ¬λ¦¬ λ±μ κ°κ°μ λͺ¨λλ‘ μ·¨κΈλλλ° μ΄λ, μ κ·Ό μ μ΄μκ° publicμ΄λ©΄ ν΄λΉ λͺ¨λ μΈλΆμμλ μ κ·Όν μ μμΌλ©°, internal μ΄λ©΄ λͺ¨λ λ΄λΆμμλ§ μ κ·Όν μ μμ΅λλ€.
μμ€ νμΌ
μμ€ νμΌμ λͺ¨λμ ꡬμ±νλ λ¨μμ λλ€. νλμ λͺ¨λμ μ¬λ¬ κ°μ μμ€ νμΌλ‘ ꡬμ±λ μ μμ΅λλ€. μμ€νμΌ λ΄μμ μ μΈλ μμλ€μ κΈ°λ³Έμ μΌλ‘ internal μ κ·Ό μ μ΄μλ₯Ό κ°μ§κ² λκ³ , μμ€ νμΌ λ΄μμλ μμ λ‘κ² μ κ·Όν μ μμ΅λλ€. λ€λ§, λ€λ₯Έ μμ€ νμΌμμλ internal μμμ μ κ·Όν μ μμ΅λλ€.
ν΄λμ€, ꡬ쑰체, μ΄κ±°ν
ν΄λμ€, ꡬ쑰체, μ΄κ±°νμ κ°κ°μ λ©€λ²λ€μ λν΄μ μ κ·Ό μ μ΄μλ₯Ό μ μ©ν μ μμ΅λλ€.
1. publicμ κ·Ό μ μ΄μλ₯Ό μ μ©νλ©΄ λ€λ₯Έ λͺ¨λμμ ν΄λΉ μμλ₯Ό μ¬μ©ν μ μμ΅λλ€.
2. internal μ κ·Ό μ μ΄μλ₯Ό μ μ©νλ©΄ κ°μ λͺ¨λ λ΄μμλ§ μ¬μ©ν μ μμ΅λλ€.
3. fileprivate μ κ·Ό μ μ΄μλ₯Ό μ μ©νλ©΄ κ°μ μμ€ νμΌ λ΄μμλ§ μ¬μ©ν μ μμ΅λλ€.
4. private μ κ·Ό μ μ΄μλ ν΄λΉ λ©€λ²κ° μ μλ λΈλ‘ λ΄μμλ§ μ¬μ©ν μ μμ΅λλ€.
μμ±, ν¨μ, λ©μλ
μμ±, ν¨μ, λ©μλλ κ°κ°μ μ κ·Ό μ μ΄μλ₯Ό μ μ©ν μ μμ΅λλ€. μμ±μ κ²½μ° publicμ κ·Ό μ μ΄μλ₯Ό μ μ©νλ©΄ λ€λ₯Έ λͺ¨λμμ μ κ·Ό κ°λ₯ν©λλ€. ν¨μλ λ©μλμ κ²½μ°μλ λ§μ°¬κ°μ§μ λλ€.
νμμ μλνλ₯Ό μν΄ Private μ κ·Όμ μ΄μλ₯Ό μμ£Ό μ¬μ©νλλ°
μΆνμ κΈ°νκ° λλ€λ©΄ μ€νμμ€λ₯Ό λ§λ€λ©΄μ
μ¬λ¬ μ κ·Όμ μ΄μλ₯Ό νμ© λ° μ λ¦¬ν΄ λ³΄κ² μ΅λλ€.
κ·ΈλΌ μ΄λ§ ππ» ππ» ππ»
'iOS > Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] Enum(μ΄κ±°ν)μ λν΄μ (0) | 2023.03.22 |
---|---|
[Swift] μ΅μ λ(Optional)μ λν΄μ (0) | 2023.03.17 |
[Swift] Closureμ λν΄μ μμ보μ (0) | 2023.03.13 |
[Swift] Genericsμ λν΄μ (0) | 2023.03.09 |
[Swift] ARC(Automatic Reference Counting)μ λν΄μ μμ보μ. (0) | 2023.03.04 |