Swift 기초 문법 - 34. class func vs static func

정성윤·2023년 8월 6일
0

Swift 이론

목록 보기
36/64

스위프트에서 class func 와 static func 는 둘다 클래스 레벨에서 정의되는 메서드입니다.

두 가지의 주요 차이점은 상속과 관련이 있습니다.

class func

class func 는 클래스 계층 구조에서 메서드가 상속되고 재정의 될 수 있음을 나타냅니다.
서브클래스에서 class func 로 정의된 메러드를 오버라이드하여 새로운 구현을 제공할 수 있습니다.

class A {
    class func someClassFunc() {
        print("Class A's class func")
    }
}

class B: A {
    override class func someClassFunc() {
        print("Class B's class func")
    }
}
let instanceA: A = B()
instanceA.someClassFunc() // 출력: "Class B's class func"

static func

static func는 메서드가 상속되지 않고, 오버라이드될 수 없음을 나타냅니다.
서브클래스에서 static func로 정의된 메서드를 동일한 이름으로 다시 정의하더라도, 부모 클래스의 메서드가 가려진 채로 유지됩니다.

class X {
    static func someStaticFunc() {
        print("Class X's static func")
    }
}

class Y: X {
    static func someStaticFunc() {
        print("Class Y's static func")
    }
}
let instanceX: X = Y()
instanceX.someStaticFunc() // 출력: "Class X's static func"

class func는 클래스 계층 구조에서 상속과 오버라이드가 가능한 메서드이며, static func(=final class func)는 상속되지 않고 오버라이드되지 않는 메서드입니다.

참고(출처) : 개발하는 정대리, 야곰(Swift5)

profile
이유있는 스위프트 개발자

0개의 댓글