- Swift - νμ λ©μλ & μΈμ€ν΄μ€ λ©μλ
- Method-zeddios
- The Swift Programming Language-Methods
μ μ: νΉμ νμ μ μΈμ€ν΄μ€μμ νΈμΆλλ Method.
μλμ μ½λλ globalThing()μ΄λΌλ μ μ ν¨μκ° νλ μκ³ , κ°κ° firstInstance, secInstance λΌλ μΈμ€ν΄μ€ λ©μλλ₯Ό κ°μ§ FirstClass, SecondClassκ° μλ€.
μ μ ν¨μλ μ΄λμμλ μ κ·Όμ΄ κ°λ₯νμ§λ§ ν΄λμ€ λ΄μ λ©μλλ ν΄λΉ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±νκ³ νΈμΆν΄μΌ νλ€. λ§μ½ λ€λ₯Έ ν΄λμ€μ λ©μλλ₯Ό νΈμΆνκ³ μΆλ€λ©΄ ν΄λΉ ν΄λμ€λ₯Ό μμν΄μΌ νλ€.
// MARK: - μ μ ν¨μ
func globalThing() -> String {
return "λλ μ μ ν¨μ"
}
class FirstClass {
var something: String?
// MARK: - μΈμ€ν΄μ€ λ©μλ
func firInstance() -> String {
return "Instance!!"
}
}
class SecondClass {
var anything: Int?
// MARK: - μΈμ€ν΄μ€ λ©μλ
func secInstance() -> String {
return "Second Instance!!"
}
}
print(globalThing()) // λλ μ μ ν¨μ
var first = FirstClass()
print(first.firInstance()) // MARK: - μΈμ€ν΄μ€ λ©μλ νΈμΆ
// Result: Instance!!
var sec = SecondClass()
print(sec.secInstance()) // MARK: - μΈμ€ν΄μ€ λ©μλ νΈμΆ
// Result: Second Instance!!
μ μ: νμ μ체μμ νΈμΆλλ Method.
νμ
λ©μλμ ν€μλλ‘λ static
κ³Ό class
κ° μλ€. μ΄ λ ν€μλκ° λΆμ λ©μλλ μΈμ€ν΄μ€μ μμ± μμ΄ μ¬μ©μ΄ κ°λ₯νλ€.
class ν€μλλ class μμλ§ μ¬μ©κ°λ₯νλ€.
-
class
keyword-
μ₯μ : λλ¬Ό μΈμμ리 λ΄κΈ°μ κ°μ λ°λ³΅μ μΌλ‘ μ¬μ© ν΄μΌνλ κ²½μ°μ μ μ©νκ² μ°μΌ μ μλ€. μΈμ€ν΄μ€λ₯Ό λ°λ‘ μμ±νμ§ μκΈ° λλ¬Έμ λ©λͺ¨λ¦¬μ κ±±μ μ ν νμλ μλ€.
-
λ¨μ : νμ§λ§ νμ₯μ±μ΄ ꡬ리λ€. λΉμ°ν κ°λ€λ‘λ§ λ¦¬ν΄μ νκ³ , μ΄κΈ°νκ° μκΈ° λλ¬Έμ λ³μλ₯Ό μ°μ§ λͺ»νλ€.
class SomeClass { // MARK: - Instance Method func useInstance() -> String { return "Instance!!" } // MARK: - Type Method class func getSomething() -> String { return "Type!!" } } var some = SomeClass() print(some.useInstance()) // Instance!! , μΈμ€ν΄μ€ λ©μλ print(some.getSomething) // error print(SomeClass.getSomething()) // "Type!!" , νμ λ©μλ
-
-
static
keywordclass
ν€μλμμ μ°¨μ΄μ μ override κ°λ₯ μ¬λΆμ΄λ€.class
ν€μλλ ν΄λΉ ν΄λμ€λ₯Ό μμ λ°μμ κ²½μ° μ€λ²λΌμ΄λκ° κ°λ₯νλ€.class SubClass: SomeClass { override class func getSomething() -> String { return "wow" } } print(SubClass.getSomething()) // wow
λν, class funcμ νμ ν΄λμ€μμ static funcλ‘ override νλ κ²λ κ°λ₯νλ€.
class SubClass: SomeClass { override static func getSomething() -> String { return "wow" } } print(SubClass.getSomething()) // wow
νμ§λ§ SomeClassμ getSomething ν€μλλ₯Ό
static
μΌλ‘ λ³κ²½ν΄μ€λ€λ©΄?class SomeClass { func useInstance() -> String { return "Instance!!" } // staticμΌλ‘ μ μΈ static func getSomething() -> String { return "Type!!" } } class SubClass: SomeClass { // error: Can not override static method override class func getSomething() -> String { return "wow" } }
static methodλ μ€λ²λΌμ΄λκ° λΆκ°νλ€λ μ€λ₯ λ©μμ§λ₯Ό λ΄λΏλλ€.
class
ν€μλλ μμfinal
ν€μλλ₯Ό λΆμ΄κ² λλ©΄ overrideλ₯Ό λ§μ μ μλ€.
μ€μννΈ Methodμ κ΄ν μ€λͺ μ΄λ€. μλ 보기 μ€μμ λ§λ κ²μ λͺ¨λ κ³ λ₯΄μμ€.
β Instance Methodsμ Type Methodsλ νΉμ νμ
μ μΈμ€ν΄μ€μμ νΈμΆλλ Methodλ₯Ό λ»νλ€.
β‘ Type Methods μ€ class funcμ νμ ν΄λμ€μμ static funcλ‘ overrideν μ μλ€.
β’ Type Methods μ€ static funcμ νμ ν΄λμ€μμ class funcλ‘ overrideν μ μλ€.
β£ Type Methods μ€ class funcμ classμλ§ μ μΈμ΄ κ°λ₯νλ©°, struct, enumμμλ μ μΈμ΄ λΆκ°λ₯νλ€.
static λ³μλ ν¨μλ object μμ±μμ΄ μ¬μ©ν μ μλ€. νμ§λ§ mutatingμ object κ·Έ μ체λ₯Ό λ°κΎΌλ€λ μλ―Έμ΄λ―λ‘ κ°μ΄ μ¬μ©ν μ μλ€.