8.3.2 타입 메서드

인스턴스를 생성하지 않고 객체 타입 자체에서 호출할 수 있는 메서드를 타입 메서드라고 합니다. 타입 메서드도 타입 프로퍼티와 동일하게 구조체나 열거형, 클래스 모두 타입 메서드를 선언할 때는 static 키워드를 사용합니다. 반면 하위 클래스에서 재정의 가능한 타입 메서드를 선언할 때는 class 키워드를 사용합니다. 물론 이 키워드는 클래스 타입에서만 사용합니다. 예제를 보겠습니다.

class Foo {
    // 타입 메서드 선언
    class func fooTyopeMethod() {
        // 타입 메서드 구현 내용 들어갑니다
    }
}

let f = Foo()
f.fooTypeMethod() // 오류
Foo.fooTypeMethod()

타입 메서드를 사용할 때 주의점이 있습니다. 타입 메서드는 객체 타입 전체에 영향을 미칩니다. 이런 영향 범위를 고려하여 사용해야 합니다. 또한 타입 메서드에서는 인스턴스 프로퍼티를 참조할 수 없습니다. 타입 메서드 자체에 인스턴스가 존재하지 않기 때문입니다.

Last updated