λ€μ΄κ°κΈ° μ μ
λ€μ΄κ°κΈ° μμμ λ¨Όμ λ©μλμ ν¨μμ μ°¨μ΄λ₯Ό μκ³ κ³μ κ°μ?
ν¨μμ λ©μλλ λΉμ·ν΄λ³΄μ΄μ§λ§ μ°¨μ΄κ° μλ΅λλ€.
λ©μλλ νΉμ μμ μ μννλ ν¨μμ λΉμ·νμ§λ§, κ°μ²΄ λ΄λΆμ λ°μ΄ν°μ μ κ·Όν μ μλ€λ μ μμ μ°¨μ΄κ° μμ΅λλ€.
ν¨μλ λ 립μ μΌλ‘ μ‘΄μ¬νλ©°, νΉμ νμ μ μνμ§ μμ΅λλ€.
λ°λ©΄μ λ©μλλ ν΄λμ€, ꡬ쑰체, μ΄κ±°ν λ±μ νΉμ νμ μ μν΄ μμΌλ©°, ν΄λΉ νμ μ μΈμ€ν΄μ€μ μ°κ²°λμ΄ μ¬μ©λ©λλ€.
λμ μ°¨μ΄λ₯Ό μ΄ν΄νλ€λ©΄, μ΄μ λ©μλμ λν΄ μμλ΄ μλ€.
Swiftμ λ©μλ
Swiftλ λ€μκ³Ό κ°μ λ€ κ°μ§ μ£Όμ λ©μλ μ νμ μ 곡ν©λλ€: μΈμ€ν΄μ€ λ©μλ, νμ λ©μλ(ν΄λμ€ λ©μλ, μ μ λ©μλ)μ λλ€. κ°κ°μ νΉμ±κ³Ό μ¬μ© μμλ₯Ό μ΄ν΄λ³΄κ² μ΅λλ€.
1. μΈμ€ν΄μ€ λ©μλ (Instance Methods)
μΈμ€ν΄μ€ λ©μλλ νΉμ ν΄λμ€, ꡬ쑰체, λλ μ΄κ±°νμ μΈμ€ν΄μ€ λ΄μμ νΈμΆλ μ μλ λ©μλμ λλ€. μΈμ€ν΄μ€ λ©μλλ μΈμ€ν΄μ€μ μμ±μ μ κ·Όνκ±°λ μμ ν μ μμ΅λλ€.
class Counter {
var count = 0
func increment() {
count += 1
}
func reset() {
count = 0
}
}
var counter = Counter()
counter.increment() // count = 1
counter.reset() // count = 0
var counter = Counter() μ΄λ κ² μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μ¬μ©νκΈ° λλ¬Έμ μΈμ€ν΄μ€ λ©μλλΌκ³ λ³Ό μ μμ΅λλ€!
2. νμ λ©μλ (Type Methods)
νμ λ©μλλ νΉμ νμ μ체μμ νΈμΆλλ λ©μλλ‘, μΈμ€ν΄μ€κ° μλ νμ μ체μ κΈ°λ₯μ μ 곡νλ λ©μλμ λλ€. νμ λ©μλμ ν΄λμ€ λ©μλ, μ μ λ©μλκ° ν¬ν¨λ©λλ€. λ°λΌμ class νΉμ static ν€μλλ₯Ό μ¬μ©νμ¬ μ μν©λλ€.
struct MathUtility {
static func absoluteValue(of number: Int) -> Int {
return number >= 0 ? number : -number
}
}
let result = MathUtility.absoluteValue(of: -5) // result = 5
2-1. ν΄λμ€ λ©μλ (Class Methods)
ν΄λμ€ λ©μλλ ν΄λμ€μ μν λ©μλλ‘, νμ ν΄λμ€μμ μ¬μ μλ μ μλ λ©μλμ λλ€. ν΄λμ€ λ©μλλ class ν€μλλ₯Ό μ¬μ©νμ¬ μ μλ©λλ€.
class Car {
class func about() -> String {
return "This is a car."
}
}
class SportsCar: Car {
override class func about() -> String {
return "This is a sports car."
}
}
print(Car.about()) // "This is a car."
print(SportsCar.about()) // "This is a sports car."
2-2. μ μ λ©μλ (Static Methods)
μ μ λ©μλλ ꡬ쑰체λ μ΄κ±°νκ³Ό κ°μ νμ μμ μ¬μ©λλ λ©μλλ‘, μΈμ€ν΄μ€λ νμ νμ μμ μ¬μ μν μ μμ΅λλ€. μ μ λ©μλλ static ν€μλλ‘ μ μλ©λλ€.
enum Theme {
static func defaultTheme() -> Theme {
return .light
}
case light
case dark
}
let defaultTheme = Theme.defaultTheme() // defaultTheme = .light
μ΄ν΄νκΈ°μ λΆμ‘±νμ ¨λ€λ©΄ μλ μμλμ νλ₯Ό μ²μ²ν λ³΄κ³ λ€μ μ½μ΄λ³΄λ κ±Έ μΆμ²λ립λλ€ π
λΆλ μ΄ν΄νμλλ° λμμ΄ λμκΈΈ λ°λΌλ©° κΈμ λ§μΉκ² μ΅λλ€ π
νλ¦° λΆλΆμ΄ μλ€λ©΄ μ§μ ν΄μ£ΌμΈμ ππ