SWIFT 문법 정리 - 3
상속
- 부모가 자식에게 재산을 물려주는 행위
클래스는 메서드,프로퍼티, 다른 특성들을 다른 클래스로부터 상속받을 수 있다.
- 상속을 해주는 클래스 : superclass
- 상속을 받는 클래스 : subclass
상속은 스위프트의 class 이외의 다른 타입의 collection에는 없는 기능이다.
서브클래스는 슈퍼클래스의 메서드,프로퍼티,서브스크립트에 접근할 수 있고 호출도 할 수 있다. 또한 overriding을 통해 서브클래스 자체의 특별한 것으로 만들 수 있다. swift는 서브클래스에서 오버라이딩으로 정의한 것들이 슈퍼클래스에 정의되어 있는지 확인하여 오류를 발견해준다.
클래스는 프로펕티 옵저버를 추가하여 상속된 프로퍼티의 값이 변화를 인지할 수도 있다. 프로퍼티 옵저버는 저장프로퍼티인지 계산프로퍼티인지 관계없이 어떠한 프로퍼티에도 추가될 수 있다.
타입캐스팅
- 인스턴스의 타입을 확인하거나 어떠한 클래스의 인스턴스를 해당 클래스 계층 구조의 슈퍼 클래스나 서브 클래스로 취급하는 방법
타입 캐스팅 연산자
타입 캐스팅 연산자는 총 4가지가 있습니다.
expression is type
expression as type
expression as? type
expression as! type
- is 연산자는 런타임에 expression 이 특정 type 으로 캐스팅 되는지 체크해줍니다. 가능하면 true 불가능하면 _false_를 return 합니다.
- as 연산자는 컴파일 단계에서 캐스팅이 실행됩니다. 그러므로 언제나 특정 type 으로 캐스팅이 성공할 때만 사용이 가능합니다. 업캐스팅(Upcasting) 혹은 브릿징(Bridging) 에 사용됩니다.
- as? 연산자는 런타임에 캐스팅하여 특정 type 의 옵셔널을 반환합니다. 성공하면 옵셔널 값을 반환하고 실패하면 nil 을 반환합니다.
- as! 연산자는 런타임에 특정 type 으로 강제 캐스팅합니다. 캐스팅에 실패할 경우 런타임 에러가 발생할 수 있습니다.
다운캐스팅이 가능하면 각자의 Print가 출력된다.
assert와 guard
assert
- 특정 조건을 체크하고, 조건이 성립되지 않으면 메세지를 출력 하게 할 수 있는 함수
- assert 함수는 디버깅 모드에서만 동작하고 주로 디버깅 중 조건의 검증을 위하여 사용한다.
guard 문
- 뭔가를 검사하여 그 다음에 오는 코드를 실행할지 말지 결정 하는 것
- guard 문에 주어진 조건문이 거짓일 때 구문이 실행됨
assert
import Foundation
var value = 0
assert(value == 0)
value = 2
aseert(value == 0, "값이 0이 아닙니다")
guard
guard 조건 else {
// 조건이 false 이면 else 구문이 실행되고
return or throw or break 를 통해 이 후 코드를 실행하지 않도록 한다.
}
프로토콜
- 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진
프로토콜은 특정 기능 수행에 필수적인 요수를 청의한 청사진(blueprint)입니다. 프로토콜을 만족시키는 타입을 프로토콜을 따른다(conform)고 말합니다. 프로토콜에 필수 구현을 추가하거나 추가적인 기능을 더하기 위해 프로토콜을 확장(extend)하는 것이 가능합니다.
프토토콜 문법 (Protocol Syntax)
프로토콜의 정의는 클래스, 구조체, 열거형 등과 유사합니다.
'IOS > 정리(IOS)' 카테고리의 다른 글
IOS) SWIFT UI 탐색 해보기 (0) | 2022.09.14 |
---|---|
SWIFT 문법 정리 - 2 (1) | 2022.09.10 |
SWIFT 문법 정리 - 1 (1) | 2022.09.10 |