Swift 입문 | 클래스 기본 | 유형 속성 및 유형 메소드

일반적 속성과 메서드는 인스턴스를 생성해야만 사용할 수 있다만, 클래스에서 바로 직접 이용할 수 있는 속성과 메소드도 제공할 수 있다. 이는 “유형 속성(type property)”, “유형 메소드(type method)“라고 한다.

유형 속성과 유형 메소드를 선언할 때는 앞에 “class"라는 수식자를 붙여 클래스에 배치된다. 그러면 클래스에서 직접 호출될 수 있다.

유형 속성 및 유형 메소드를 사용할 때 몇 가지 주의해야 할 점이 있다.

  • 유형 속성으로 만들 수 있는 것은 “Computed 속성"이다. 보통의 변수에 할당하는 속성은 제공되지 않는다. 또한 클래스에 저장할 변수를 제공되지 않기 때문 때문에, Computed 속성의 set도 거의 사용할 수 없다고 생각해도 좋을 것이다.

  • 유형 메소드 내에서 이용할 수 있는 것은 유형 메소드 및 유형 속성뿐이다. 일반 (인스턴스에서 사용하는) 속성과 메소드는 사용할 수 없다.

아래에 실제 사용 예를 보도록 하자.

class Exchange {
    class var rate:Double {
        return 1005.0
    }
    
    class func DollarToWon(d:Double)->Int {
        return Int(d * rate)
    }
    
    class func WonToDollar(y:Int)->Double {
        return Double((y * 100) / Int(rate)) / 100
    }
}

print(Exchange.DollarToWon(1.5))
print(Exchange.WonToDollar(1500))

여기에서는 원화에서 달러로, 달러에서 원화로 환산하면 Exchange 클래스를 준비했다. rate 유형 속성과 계산을 할 두 가지 유형 메소드를 제공하고 있다. 이러한 계산을 중심으로한 클래스는 일일이 인스턴스를 만들 필요가 없기 때문에, 클래스 메소드로 제공하는 편이 효율적으로 사용할 수 있는 것이다.