VesselWheel

확장(Extension)에 대해서 설명해주세요. 본문

Grammary in Swift

확장(Extension)에 대해서 설명해주세요.

JasonYang 2024. 3. 22. 06:30

기존 타입에 기능을 추가하는 수평 확장하는 개념으로 확장을 이용하여 structure, class, enum, protocol 타입에 새로운 기능을 추가할 수 있습니다.

외부에서 가져온 타입에 내가 원하는 기능을 추가하고자 할 때 확장을 사용할 수 있습니다. 

확장으로 구현 가능한 것은 다음과 같습니다. 

Extension으로 구현 가능한 것들:

  1. 새로운 계산된 속성(Computed Property) 추가
  2. 새로운 인스턴스/타입 메서드 추가
  3. 새로운 초기화(Initializer) 추가
  4. 프로토콜 채택(Protocol Conformance)
  5. 서브스크립트 추가(Subscripting)
  6. 중첩 타입(Nested Type) 추가

Extension으로 구현 불가능한 것들:

  1. 저장 프로퍼티(Stored Property) 추가: Extension으로는 저장 프로퍼티를 추가할 수 없습니다. 오직 계산된 프로퍼티만 추가할 수 있습니다.
  2. 기존 기능의 재정의(Override): 이미 존재하는 기능을 Extension에서 재정의(Override)할 수 없습니다. 상속과 재정의는 클래스에서만 가능합니다.
  3. 초기화 메서드(Initializer)의 재정의: Extension으로는 새로운 편의 초기화 메서드를 추가할 수 있지만, 기본 초기화 메서드 또는 지정 초기화 메서드를 재정의할 수는 없습니다.
  4. 기존 타입의 저장된 프로퍼티에 기본값 설정: Extension에서는 기존 타입에 저장된 프로퍼티에 기본값을 설정할 수 없습니다.