Extension에 대해 설명하시오. ( 다시)
정의
존재하는 클래스, 구조체, 열거형, 프로토콜 타입에 새롭게 기능적인 부분을 추가할 수 있고 요구사항을 구현하는 데도 사용할 수 있는 문법
역할
이전의 내부 소스를 접근할 수 없는 원본 타입들에 대해 새로운 기능을 부여할 수 있는 방법
구조체, 클래스, 열거형, 프로토콜의 추가 구현부, 제약사항, 기능 등을 정의
특정 타입의 기능 및 준수하는 프로토콜 별 구현부를 분리해서 보다 코드 가독성을 높일 수 있다.
특징
- Objective-C의 category와 유사하지만 다른 점은 별도의 이름을 갖지 않는다는 것이 ㅇ다.
- 타입의 새로운 기능을 추가할 수 있으나, 기존 기능의 오바라이딩은 허용하지 않는다.
Extension이 추가할 수 잇는 기능
- Computed Property 추가
- 인스턴스 메서드, 타입 메서드의 정의
- 새로운 생성자의 제공
- subscripts 접근 방식 정의
- 중첩타입의 정의 및 사용
- 특정 프로토콜을 준수하는 현존 타입 정의