반응형
스위프트의 메서드에 관해 기록하겠습니다.
스위프트의 메서드로는 Instance, Static, Class가 있습니다.
instance 메서드
우선, instance 메서드는 클래스를 만들고 해당 클래스의 인스턴스 생성을 통해 호출할 수 있습니다.
class ExClass {
func instanceMethod() {
print("Instance")
}
}
let ex = ExClass()
ex.instanceMethod() // Instance
위 코드처럼 ExClass의 ex 인스턴스를 생성하고 ex를 통해 instacneMethod()를 호출할 수 있습니다.
static 메서드와 class 메서드의 공통점
- static 메서드와 class 메서드는 타입 메서드라고 합니다.
- 또한, static 메서드와 class 메서드는 인스턴스를 생성하지 않고 바로 접근하여 호출할 수 있습니다.
class ExClass {
static func staticMethod() {
print("Static")
}
class func classMethod() {
print("Class")
}
}
ExClass.staticMethod() // Static
ExClass.classMethod() // Class
위 코드처럼 ExClass에 바로 접근하여 함수를 호출할 수 있습니다.
static 메서드와 class 메서드의 차이점
- static 메서드 → 상속 후 메서드 재정의 불가능
- class 메서드 → 상속 후 메서드 재정의 가능
class NewClass: ExClass {
// 오버라이딩 불가능 (컴파일 에러)
override static func staticMethod() {}
// 오버라이딩 가능
override class func classMethod() {}
}
위 코드처럼 상속 후 메서드 재정의가 static은 불가능하고 class는 가능한 것을 볼 수 있습니다.
final키워드를 이용해서 class func의 상속을 막을 수 있습니다.
그러므로, 구조체와 열거형은 static 메서드를 사용하고 클래스에서는 static 또는 class(상속)를 사용합니다.
부족한 점 피드백해주시면 감사하겠습니다👍
반응형
'Swift' 카테고리의 다른 글
[Swift] Optional (0) | 2021.05.22 |
---|---|
[Swift] ARC (1) (0) | 2021.05.12 |
[Swift] popLast() vs removeLast() (0) | 2021.05.11 |
[Swift] 구조체와 클래스 (0) | 2021.05.06 |
[Swift] flatMap & compactMap (0) | 2021.01.23 |
댓글