함수(instance함수, class함수, static함수)알아보기!

2022. 7. 24. 23:35swift

swift 에는 세가지 함수 종류가 있습니다. 앞에 붙는 키워에 따라서 instance/ class/ static으로 나뉩니다.

class Sample {

    // 1. Instance 함수

    func InstanceFunc() { }

    // 2. class 함수

    class func ClassFunc() { }

    // 3. static 함수

    static func StaticFunc() { }

}

평소에  쓰던 함수들은 instance 함수일 확률이 매우 높다....

다른 나머지 2가지의 함수을 알아보도록하자.

 

우선 

static함수와 class함수는 타입 메소드 라고 부릅니다.

모두 class 객체보다는 class 자체와 연관되어 있습니다.

()생성자를 통해서 인스턴스를 생성하지 않더라도 바로접근이 가능합니다.

Sample.ClassFunc()

Sample.StaticFunc()

 

차이점

class 를 상속받은 subclass에서 나타난다.

class 함수 - override 가 가능하다..

static 함수 - override 가 불가능하다.

class SubSample : Sample {

    // Good!

    override class func ClassFunc() {

        // 에러 

    }

    override static func StaticFunc() {

    }   // static 함수는 에러가 나타난다..

}

 

어... 새롭게 코드를 짜보았습니다..

사진을 보시면 알겠지만 static함수는 새로?추가적으로?불러올수가없습니다.

enum 이 되지않았다. 왜 그런가 하면 오버라이드가 안돼기 때문입니다...

그러한 이유가 static함수가 파이널 함수와 같아서 첫 static 함수를 쓴 것을 추가 뒤에 추가하더라도 첫 호출만 가능하다고 합니다.!

static함수나 class함수를 사용하는 이유는 메모리에 올리지 않고, 객체를 만들지 않고도 호출이 가능하기 때문이다.!(어떠한 경우에도 사용이 가능하다!)

super를 통해서 부모 로직의 함수를 사용하고 싶을 때 추가하면 사용이 가능하다.