static func과 final class func는 스위프트 언어에서 사용되는 특별한 종류의 메서드 선언입니다.
static func은 클래스나 구조체의 타입 자체에 속하는 정적 메서드를 선언하라 때 사용됩니다.
해당 메서드는 타입 멤버로써 인스턴스를 생성하지 않고도 호출할 수 있습니다. 클래스의 인스턴스에 의존하지 않고도 작업을 수행하고 싶을 때 유용하게 사용됩니다. 타입 메서드는 서브클래스에서 재정의할 수 없으며, 자식 클래스에서 다시 구현할 수 없습니다.
class MathUtility {
static func add(_ a: Int, _ b: Int) -> Int {
return a + b
}
}
let sum = MathUtility.add(5, 3) // 정적 메서드 호출
final class func은 상속을 허용하지 않는 클래스 메서드를 선언할 때 사용됩니다. final 키워드는 해당 메서드의 재정의를 금지하며, 서브클래스에서 해당 클래스 메서드를 변경할 수 없습니다.
class Shape {
final class func description() -> String {
return "This is a shape."
}
}
class Circle: Shape {
// 오류: 상속한 메서드를 재정의할 수 없음
// override class func description() -> String {
// return "This is a circle."
// }
}
Shape 클래스 내의 메서드는 final로 선언되어 있으므로, Circle 클래스 내에서 재정의하려고 하면 컴파일 오류가 발생합니다.
참고(출처) : 개발하는 정대리, 야곰(Swift5)