본문 바로가기
Swift

[Swift] Extension

by Sky Titan 2020. 12. 26.
728x90
스위프트 프로그래밍
국내도서
저자 : 야곰
출판 : 한빛미디어 2019.10.01
상세보기

Extension

  • 스위프트의 가장 강력한 기능 중 하나로 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있게 해준다.
  • 기능을 추가하려는 타입을 구현한 소스 코드를 알지 못하더라도 타입만 알면 기능 확장이 가능하다.
  • 상속은 수직 확장, 익스텐션은 수평 확장
  • but 기존에 존재하는 기능을 재정의할 순 없다.

 

익스텐션이 타입에 추가할 수 있는 기능

  • 연산 타입 프로퍼티 (Computational Type Property) / 연산 인스턴스 프로퍼티 (Computational Instance Property) 
    • 저장 프로퍼티 (Stored Property) 는 x
  • 타입 메서드 / 인스턴스 메서드
  • 이니셜라이저 (Initializer)
  • 서브 스크립트 (Subscript)
  • 중첩 타입
  • 특정 프로토콜 준수하는 기능 추가

 

상속 vs 익스텐션

  상속 익스텐션
확장 수직 확장 수평 확장
사용 클래스 모든 타입 (클래스, 구조체, 프로토콜, 제네릭 등)
재정의 O X

 

import Foundation

class Person {

    var name : String
    var age : Int

    init(name : String, age : Int) {
        self.name = name
        self.age = age
    }
    

}

protocol PersonDelegate {

    func printName()

}

extension Person : PersonDelegate {

    //내년 나이를 반환하는 computational instance property
    var nextYearAge : Int {
        return age + 1
    }

    //프로토콜 기능
    func printName() {
        print(name)
    }
}

var person = Person(name : "Park", age : 15)

print(person.nextYearAge)
person.printName()
728x90

'Swift' 카테고리의 다른 글

[Swift] 메서드 (Method)  (0) 2020.12.26
[Swift] 프로퍼티 (Property)  (0) 2020.12.26
[Swift] 열거형 (Enumeration)  (0) 2020.12.20
[Swift] 컬렉션형  (0) 2020.12.20
[Swift] Tuple 튜플  (0) 2020.12.19

댓글