π₯ μλ‘μ΄ μμ
μλ νμΈμ, νλΌμ λλ€ γ° π
λΈλ‘κ·Έμ μλ‘μ΄ μΉ΄ν κ³ λ¦¬κ° μκ²Όμ΅λλ€ γ° (μΌνΈ)
λλꡬμ? λ°λ‘ 'β¨ iOSλ₯Ό μν κ°λ μμ' μΉ΄ν κ³ λ¦¬μΈλ°μ γ°
곡λΆλ₯Ό νλ€λ³΄λ©΄ κ°λμ©(맨λ ) λͺ¨λ₯΄λ κ°λ
μ΄λ ν€μλ, λ¬Έλ² λ±μ΄ λμ€λλ°
κ·Έλ° λ΄μ©λ€μ μ 리νλ €κ³ νλ €κ³ ν©λλ€.
λ€μ λ΄μ©μ μ μ μΈμ€ν κ°λ° λ‘κ·Έ κ³μ (@taekki.dev)μλ μ¬λΌκ°λ λ§μ κ΄μ¬ λΆνλλ €μ :)
μ΄κ±΄ TMIμΈλ° μ«μ μΈλ±μ±μ΄ μΈ μ리μμ£ !?
μΈ μ리μκΉμ§ ν¬μ€ν ν κ·Έ λ μ μν¨μ΄λΌλ...
λ κ·Έ λ μ―€ λλ©΄ μ€λ ₯μ΄ μ‘°κΈμ λμ΄μκ² λ€μ(νν)
κ·ΈλΌ μ€λ ν¬μ€ν μμν΄λ³΄κ² μ΅λλ€ π
π¬ λ€μ΄κ°λ©°
typealiasμ λν΄ κ³΅λΆνλ μ€μ ‘μλΈν΄λμ±μμ΄ μ»€μ€ν νμ μ λ°°μ΄μ μ μνλλ° μ μ©νλ€’ μλ° μ΄μΌκΈ°κ° λμμ μλΈν΄λμ±μ΄ 무μμΈμ§ λ¨Όμ μμ보λλ‘ νκΈ°λ‘ νμ΅λλ€. κ·Έ μΈμλ κ°λμ© λΈλ‘κ·Έλ κ°μ’ λ νΌλ°μ€λ₯Ό μ°Ύμ보λ€λ³΄λ©΄ μλΈν΄λμ±μ΄λΌλ λ¨μ΄κ° 보μ΄κΈΈλ μ΄ μ°Έμ μ 리νλ©΄ μ’μ κ² κ°λ€μ!
π± μλΈν΄λμ±μ΄λ?
ν λ§λλ‘ λ§ν΄μ μμ(Inheritance)μ λλ€. μμμ κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°νλ©΄ λ¨κ³¨λ‘ λμ€λ κ°λ μ λλ€. μ€μνμμλ 'μ μ° μμ' μλ° ννμΌλ‘ λ§μ΄ μ°μ λλ€. λ³΄ν΅ λΆλͺ¨μ μ¬μ°μ μμμ΄ λ¬Όλ €λ°κ² λμ£ ? κ·ΈλΌ μμμ΄λΌλ κ°λ μ λ€μκ³Ό κ°μ΄ μ 리ν μ μμ κ² κ°μ΅λλ€.
μμ οΉ¦ λΆλͺ¨μ κ²μ μμμ΄ λ¬Όλ €λ°λ κ²
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μμλ μ°λ¦¬λ ν΄λΉ κ°λ μ μ°Ύμλ³Ό μ μμ΅λλ€. ν΄λμ€λ λ€λ₯Έ ν΄λμ€λ‘λΆν° λ©μλ, νλ‘νΌν° λ±μ λ€λ₯Έ νΉμ§λ€μ λ¬Όλ €λ°μ μ μμ΅λλ€. μ΄λ¬ν κ°λ μ μ°λ¦¬λ μμμ΄λΌκ³ λΆλ¦ λλ€. μμμ ν΄μ£Όλ ν΄λμ€λ₯Ό λΆλͺ¨ ν΄λμ€(Super Class)λΌκ³ λΆλ₯΄κ³ , μμμ λ°λ ν΄λμ€λ₯Ό μμ ν΄λμ€(Sub Class)λΌκ³ λΆλ¦ λλ€.
μμμ νλ λ°©μμ λν μΌνκ² λλμ΄ λ³΄λ©΄ μλΈν΄λμ±(Subclassing)κ³Ό μλΈνμ΄ν(Subtyping)μΌλ‘ λλλ κ²μΈλ°μ.
μλΈν΄λμ±μ κΈ°μ‘΄μ ꡬνλμ΄ μλ ν΄λμ€λ₯Ό ν΅ν΄ μλ‘μ΄ ν΄λμ€λ₯Ό λ§λλ κ²μ λλ€. ꡬνλμ΄ μλ ν΄λμ€λ₯Ό μμνλ€λ μ μ΄ μλΈνμ΄νκ³Ό λ€λ₯Έ λΆλΆμ λλ€. μ 리λ₯Ό ν΄λ³΄λ©΄ μλΈν΄λμ±μ ν΅ν΄ λΆλͺ¨ ν΄λμ€(Super Class)μ ꡬνλ μ½λμ ꡬ쑰λ₯Ό μμ ν΄λμ€(Sub Class)κ° λ¬Όλ €λ°μ μ μμ΅λλ€. λν μμ ν΄λμ€λ λΆλͺ¨ ν΄λμ€μ μ½λλ₯Ό μ¬μ¬μ©ν μ μμ λΏλ§ μλλΌ μκΈ° μμ λ§μ κ³ μ ν λ΄μ©μ μΆκ°ν μλ μλ΅λλ€.
π§π»π» μμ μ½λ
// λΆλͺ¨ ν΄λμ€(Super Class)
class Drink {
var name = "Unknown"
var alcohol = 0.0
init(name: String, alcohol: Double) {
self.name = name
self.alcohol = alcohol
}
func drink() {}
}
// μμ ν΄λμ€(Sub Class)
class Soju: Drink {
var kcal = 900
var emergencyMessage: String {
return "μμ£Όλ 500ccλΉ \(kcal)λ€...π₯"
}
}
let jinro = Soju(name: "μ§λ‘", alcohol: 16.9)
print(jinro.alcohol) // λΆλͺ¨ ν΄λμ€μ νλ‘νΌν°
print(jinro.emergencyMessage) // μμ ν΄λμ€μ μλ‘κ² κ΅¬νν νλ‘νΌν°
β¨ λ§λ¬΄λ¦¬νλ©°
μμ보λ μ°λ¦¬κ° κΈ°μ‘΄μ μκ³ μμλ μμ κ°λ μ λΆλ₯΄λ λ§μ΄μλ€μ. μμ λ°λ νμλ₯Ό μ°λ¦¬λ μλΈ ν΄λμ±μ΄λΌκ³ λΆλ₯΄κ³ μλ κ²μ΄μ£ .. λν μΌνκ² λ³΄λ©΄ μλΈν΄λμ±κ³Ό μλΈνμ΄νμΌλ‘ μμμ λ°©μμ΄ λλμ§λ§ λ κ°μ§ λͺ¨λ μμμ νλ νμμΈ κ²μ λμΌνλ€κ³ λ³Ό μ μμ΅λλ€. ν무νμ§λ§ μ€λμ κ°λ κ³΅λΆ μ±κ³΅! ππ»βοΈ
π λ νΌλ°μ€
https://epicdevsold.tistory.com/177
https://jusung.gitbook.io/the-swift-language-guide/language-guide/13-inheritance
'π iOS & Swift' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[iOS] UIWindow (0) | 2021.11.07 |
---|---|
[iOS] CollectionView Cell λλΉ λμ μΌλ‘ μ‘°μ νκΈ° (8) | 2021.10.28 |
[iOS] Delegate Pattern(λΈλ¦¬κ²μ΄νΈ ν¨ν΄) μμ(1) - μ΄μ νλ©΄μΌλ‘ λμ΄μ€λ©΄μ λ°μ΄ν°λ₯Ό μ λ¬νκ³ μΆμ λ (4) | 2021.09.09 |
[iOS] Associated Type (3) | 2021.09.05 |
[iOS] Typealias, νμ λ³μΉ μ¬μ©νκΈ° (3) | 2021.09.02 |