Class, Stuct, Enum 형태의 인스턴스에 속한 메소드를 의미합니다.
클래스를 통해 호출할 수 없고, 클래스의 인스턴스를 만들어 실체화
하여 생성된 인스턴스를 통해서 호출할 수 있는 메소드 입니다.
Class Method
는 인스턴스를 만들어 실체화 하지 않아도 클래스를 통해 직접적으로 호출
할 수 있습니다.
func
키워드 앞에 class
키워드가 붙어 class func methodName(){}
형태로 선언합니다.
Instance Method
와 달리 struct
, enum
에서 사용할 수 없습니다.
Why?
struct, enum 은 상속이 불가능 하기 때문입니다.
그렇다면 왜 상속이 불가능한 struct
, enum
은 class Method
를 사용하지 못할까요?
Class Method
는 static 메소드
를 상속
할 수 있도록 만든 메서드 이기 때문입니다.
원래 프로그래밍 언어(예: JAVA) 에서는 static Method
를 overriding
할 수 없게 되어있지만, Swift
에서는 static Method
를 overriding
할 수 있도록 Class Method 를 추가 한겁니다.
(Class
내에서는 static Method
, class Method
는 같은 의미입니다. 즉, 클래스에 한해 static Method
를 override
하는 것이 가능합니다.)
둘의 차이로는
정의된 Class, struct, enum 을 실체화(인스턴스)
하여 사용하느냐
실체화(인스턴스)
하지않고 직접적으로 호출 하느냐
Class 가 아닌 struct, enum 에서 선언될 수 있느냐 없느냐
정도가 있습니다.