일모도원(日暮途遠) 개발자
[Swift] class func vs static func 본문
스위프트에는 static 함수말고 class함수도 있다.
class MyClass {
func myFunc() {}
class func myClassFunc() {}
static func myStaticFunc() {}
}
일반적인 함수는 인스턴스 메소드(Instance method)로 객체를 생성한후에 부른다.
static함수는 객체를 생성하지 않고 MyClass.myStaticFunc()처럼 클래스명에 붙여서 부르면 되는데 class func는 뭘까?
차이점은 class func는 상속이 된다. 이외는 static func(상속 안됨)와 똑 같다. 둘다 타입 메소드(type method)라 부른다.
class SubClass : MyClass {
class func myClassFunc() {}
static func myStaticFunc() {} //이건 안된다. 컴파일시 에러남.
}
근데 아직 class func을 만들어서 상속을 사용할때 사용할 케이스를 찾지 못했다. 언제 쓸까?
참고로 자바에서도 스태틱 메소드는 상속이 안된다.
자식 클래스에서도 부모클래스의 스태틱 메소드와 같은 이름의 스태틱 메소드를 가질수는 있지만 @Override 어노테이션을 붙일수 없다. 이를 Hiding이라고 부른다.
'프로그래밍 언어 > 스위프트' 카테고리의 다른 글
[Swift] Range를 이용한 Array생성 (0) | 2022.12.07 |
---|---|
[스위프트] switch문에서 @unknown default (0) | 2022.09.13 |
[Swift] 문자열에 숫자가 있는거 정렬하기 (0) | 2022.09.03 |
[Swift] ~= 연산자 (0) | 2022.08.08 |
[Swift] @objc가 뭐지? (0) | 2022.07.23 |