본문 바로가기
Swift

[Swift] Instance, Static, Class Method

by thoonk: 2021. 5. 8.

스위프트의 메서드에 관해 기록하겠습니다.

스위프트의 메서드로는 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] 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
[Swift] 알고리즘에 필요한 Tip 정리  (5) 2021.01.22

댓글