개발/Swift
인스턴스 메소드/ 클래식 메소드/ 스태틱 메소드
덤벨로퍼
2022. 3. 1. 12:29
class A {
func instanceM(){
}
static func staticM(){
}
class func classM(){
}
}
클래스에는 인스턴스 메소드 스태틱 메소드 클래스 메소드를 구현 할수있다.
이들의 차이점은 다음과 같다.
A.staticM()
A.classM()
A.instanceM() //Fail
스태틱 클래스 메소드와 달리 인스턴스 메소드는 인스턴스화 이후에 메소드를 사용 할수있다.
스태틱 클래스 메소드는 클래스에서 직접 메소드를 호출할수있다.
그러면 스태틱 클래스 메소드는 같은걸까?
이 둘의 차이점은 오버라이딩 가능 여부에 따라 갈린다.
클래스 메소드는 오버라이딩이 가능한 메소드이다.
반면 스태틱 메소드는 불가능 하다.
즉 상속을 받을때 클래스 메소드를 사용하며
그렇지 않을떄 스태틱 메소드를 사용한다.
struct A {
static func staticM(){
}
class func classM(){ //ERROR
}
}
struct 에서는 상속이 안되므로 클래스 메소드를 사용할수 없다.
스태틱 메소드만 사용이 가능하다.
class A {
class func staticM(){}
}
class B : A {
override class func staticM(){}
}
위와 같이 클래식 메소드를 상속 받아 오버라이딩 할 경우
클래스 메소드를 사용하면 된다. 스태틱 메소드의 경우 에러를 뱉을것이다.