(Swift) μΈμ€ν΄μ€ λ©μλ , νμ λ©μλ (instance method, type method)
μ€μννΈμμ ν¨μμ μ’ λ₯
μ€μννΈμμ ν¨μλ ν¬κ² λκ°μ§λ‘ λλλ€. μΈμ€ν΄μ€ λ©μλμ νμ
λ©μλμ΄λ€. κ·Έλ¦¬κ³ νμ
λ©μλλ λ€μ static method
, class method
λ‘ λλλ€.
- Instance Method
- Type Method
- Static Method
- Class Method
class ExampleClass{
func instanceMethod(){} // μΈμ€ν΄μ€ λ©μλ
class func classMethod(){} // ν΄λμ€ λ©μλ (νμ
λ©μλ)
static func staticMethod(){} // μ€νν± λ©μλ (νμ
λ©μλ)
}
λͺ¨μμ 보λ λ³λ€λ₯Έ ν€μλ μμ΄ μΌλ°μ μΌλ‘ μ¬μ©νλκ²μ μΈμ€ν΄μ€ λ©μλλΌκ³ νλ€. κ·Έλ¦¬κ³ class
λλ static
ν€μλλ₯Ό ν΅ν΄ μ μλ ν¨μλ₯Ό νμ
λ©μλλΌκ³ νλ€.
3κ°μ§ μ’ λ₯μ ν¨μμ μ°¨μ΄μ μ μμ보μ.
μΈμ€ν΄μ€ λ©μλ (Instance Method)
νΉμ νμ μ μΈμ€ν΄μ€(ν΄λμ€, ꡬ쑰체, μ΄κ±°ν...) μ μν ν¨μλ₯Ό λ§νλ€. κ·Έλ κΈ° λλ¬Έμ λ³΄ν΅ ν΄λΉ μΈμ€ν΄μ€μ κ΄λ ¨ν λμμ μννλ€.
struct ExampleStruct{
var count: Int = 0 {
didSet{
// countλΌλ νλ‘νΌν°κ° λ³κ²½λλ©΄ νΈμΆνλ νλ‘νΌν° κ°μμ
print("countκ° λ³κ²½λ¨-> \(count)")
}
}
mutating func countUp(){ // ꡬ쑰체μ μΈμ€ν΄μ€ λ©μλ
self.count += 1
}
}
κ·Έλ¦¬κ³ λΉμ°ν μΈμ€ν΄μ€λ₯Ό μμ±ν΄μΌ ν΄λΉ λ©μλλ₯Ό μ¬μ©ν μ μλ€. .
μ ν΅ν΄ μ κ·Όνμ¬ μ¬μ©νλ©΄λλ€.
var exampleStruct = ExampleStruct()
exampleStruct.countUp()
exampleStruct.countUp()
>>> countκ° λ³κ²½λ¨-> 1
>>> countκ° λ³κ²½λ¨-> 2
νμ λ©μλ (Type Method)
νμ λ©μλλ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ νμ λ©μλ μ체μμ λ°λ‘ μ κ·Όμ΄ κ°λ₯νλ€.
Example.classMethod()
κ·Έλ¦¬κ³ λ νκ°μ§ μ€μνμ μ νμ
λ©μλ λ΄λΆμμ self
λ νμ
κ·Έ μ체λ₯Ό κ°λ¦¬ν¨λ€. (μΈμ€ν΄μ€ λ©μλλ μΈμ€ν΄μ€λ₯Ό κ°λ¦¬ν΄)
class SuperClass{
class func printName(){
print("this is \(self)")
}
static func printName2(){
print("this is \(self)")
}
}
class SubClass: SuperClass {
override class func printName(){ // >>> μ€λ²λΌμ΄λ κ°λ₯
print("this is \(self)")
}
override static func printName2(){ // >>> μ€λ²λΌμ΄λ λΆκ° μ»΄νμΌ μλ¬
print("this is \(self)")
}
}
SuperClass.printName() // μΈμ€ν΄μ€κ° μλλΌ νμ
μ체μ μ κ·Όνμ¬ λ©μλλ₯Ό νΈμΆνλ€.
SubClass.printName()
κ·ΈλΌ static λ©μλμ staticλ©μλμ μ°¨μ΄λ λκΉ?
class
λ©μλ: override
κ°λ₯νλ€.
static
λ©μλ: override
κ° λΆκ°λ₯νλ€.
μ΄λ¬ν μ°¨μ΄μμ λμ€λ μ°¨μ΄κ° νκ°μ§ λ μλ€. μμμ΄ λΆκ°λ₯ν structλ enumμμ class func
λ₯Ό μ μνλ©΄ μ»΄νμΌ μλ¬κ° λ°μνλ€. (ν€μλ μ΄λ¦μ²λΌ classμμλ§ μ¬μ©λλ€)
κ·ΈλΌ νμ
λ©μλλ μΈμ μ°λ©΄ μ’μκΉ?
static
ν€μλλ₯Ό μ¬μ©νλ κ²μ ν΄λΉ νλ‘νΌν°λ λ©μλκ° νμ
μ체μ μ°κ΄λ λ μ¬μ©νλ©΄ λλ€. λ€μ μ½κ² λ§νλ©΄, μ μΌν κ°μ κ°μ ΈμΌ ν λ μ¬μ©λλ€. (μ±κΈν€ ν¨ν΄μμλ static μ μ¬μ©νλ€.)
μλ₯Όλ€μ΄ "λ³Όλ₯¨" μ λ΄λΉνλ ν΄λμ€μ "μν μ¬μ", "μμ
μ¬μ"μ λ΄λΉνλ ν΄λμ€κ° μλ€. λ³Όλ₯¨μ μμ€ν
μμ μ μΌν κ°μ΄μ΄μΌ νλ©°, μν μ¬μκ³Ό μμ
μ¬μμ μ€κ³ κ°λλΌλ κ°μ΄ λ°λλ©΄ μλλ€. μ΄λ λ³Όλ₯¨μ static
νλ‘νΌν°λ₯Ό μ¬μ©νλ©΄ μλ§μκ²μ΄λ€. κ·Έλ¦¬κ³ ν΄λΉ λ³Όλ₯¨μ μ‘°μ νλ λμμ static func mute(){}
λ±μΌλ‘ static
νλ‘νΌν°λ₯Ό μ¬μ©νλ©΄ λλ€.
β (+ μ΄ μμ€μ μμμ΄ νμνλ€λ©΄ class
λ©μλλ₯Ό μ¬μ©νλ©΄ λκ² μ§)