Old_SWIFT(221012)/기본이야기

함수의 종류(인스턴스 메서드, 타입 메서드, instance method, type method)

KataRN 2022. 10. 4. 14:48
반응형

안녕하세요. KataRN입니다.

 

오늘은 함수의 종류에 대해 알아보겠습니다.

 

Swift에서 함수는 아래처럼 3가지로 나뉩니다.

  • Instance Method
  • Type Method
    • Static Method
    • Class Method
class ExampleClass{
  func instanceMethod(){}   // 인스턴스 메서드
  class func classMethod(){} // 클래스 메서드 (타입 메서드)
  static func staticMethod(){} // 스태틱 메서드 (타입 메서드)
}

 

보통 저희가 쓰던 함수가 인스턴스 메서드, 앞에 class, static를 붙인 아이들이 타입 메서드입니다.

 

인스턴스 메서드 (Instance Method)

특정 타입의 인스턴스(클래스, 구조체, 열거형...) 에 속한 함수를 말한다. 그렇기 때문에 보통 해당 인스턴스와 관련한 동작을 수행한다.

인스턴스를 생성해야 해당 메서드를 사용할 수 있다.

"." 을 통해 접근하여 사용하면된다.

 

타입 메서드 (Type Method)

타입 메서드는 인스턴스를 생성하지 않고 타입 메서드 자체에서 바로 접근이 가능하다.

Example.classMethod()

그리고 또 한가지 중요한점은 타입 메서드 내부에서 self 는 타입 그 자체를 가리킨다. (인스턴스 메서드는 인스턴스를 가리킴)

 

class 메서드와 static 메서드의 차이

class 메서드: override 가능하다.

static 메서드: override가 불가능하다.

- override : 슈퍼클래스로부터 상속받은 메서드, 프로퍼티들을 재정의하는 키워드

이러한 차이에서 나오는 차이가 한가지 더 있다. 상속이 불가능한 struct나 enum에서 class func를 정의하면 컴파일 에러가 발생한다. 

 

타입메서드는 언제 사용하는지?

static 키워드를 사용하는 것은 해당 프로퍼티나 메서드가 타입 자체와 연관될때 사용하면 된다. 다시 쉽게 말하면, 유일한 값을 가져야 할때 사용된다. (싱글톤 패턴에서도 static 을 사용한다.)

 

 

오늘도 긴글 읽어주셔서 감사합니다.

반응형