728x90
|
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 |
댓글