인스턴스 메소드란
클래스, 구조체, 열거형의 인스턴스에 속한 메소드를 의미합니다.
예제
class Temp {
func instanceMethod() {
print("instanceMethod")
}
}
let temp = Temp()
temp.instanceMethod()
인스턴스 메소드를 호출하기 위해서는 Temp를 인스턴스화 후 해당 메소드를 호출해야합니다. 인스턴스 없이 독립적으로 호출할 수 없습니다.
타입 메소드란
타입 자체에서 호출할 수 있는 메소드를 의미합니다.
클래스를 위한 타입메소드는 func 키워드 앞에 class 키워드를 작성합니다.
구조체와 열거형을 위한 타입메소드는 func 키워드 앞에 static 키워드를 작성합니다.
예제
// class
class Temp {
class func classMethod() {
print("classMethod")
}
static func staticMethod() {
print("classMethod")
}
}
Temp.classMethod()
Temp.staticMethod()
// struct
struct Temp {
// 불가능
class func classMethod() {
print("classMethod")
}
static func staticMethod() {
print("classMethod")
}
}
구조체, 열거형에서는 class메소드를 선언하면 컴파일 에러가 발생합니다. 그 이유는 상속이 불가능하기 때문입니다.
class, static 가장 큰 차이점은 오버라이드가 가능한지에 대한 여부입니다.
하지만 class 키워드를 써도 final 키워드를 앞에 붙인다면 오버라이드를 막을 순 있습니다.
'Swift' 카테고리의 다른 글
[Swift] 구조체란 무엇인가? (0) | 2020.01.03 |
---|---|
[Swift] 델리게이트(Delegate) 패턴이란 (0) | 2020.01.03 |
[Swift] 노티피케이션 센터와 노티피케이션 (0) | 2018.09.16 |
[Swift] DispatchQueue란? (0) | 2018.09.14 |
[Swift] Property - didSet, willSet이란 (0) | 2018.06.11 |