[Swift] 타입 캐스팅 / Type Casting / Up casting / Down Casting

2022. 9. 2. 03:13🍏/Swift

타입 캐스팅 (Type Casting)

형변환 -> 특정 타입으로 선언된 값을 다른 타입으로 변환하는 것.

타입 캐스팅은 전 타입과 후 타입의 상위/하위 관계에 따라 업캐스팅 / 다운캐스팅으로 나뉨.

업 캐스팅(UP casting)
 - 하위 클래스 타입을 상위 클래스 타입으로 변환할 때
 - 캐스팅하기 전 타입이 하위 클래스, 캐스팅한 후 타입이 상위클래스일 때
 - 캐스팅한 결과, 캐스팅하기 전 타입보다 추상화될 때
 - 일반적으로 캐스팅 과정에서 오류가 발생할 가능성이 없음

다운 캐스팅(DOWN casting)
 - 상위 클래스 타입을 하위 클래스 타입으로 캐스팅할 때
 - 캐스팅하기 전 타입이 상위 클래스, 캐스팅한 후 타입이 하위 클래스
 - 캐스팅한 결과, 캐스팅하기 전 타입보다 구체화될 때
 - 캐스팅 과정에서 오류가 발생할 가능성이 있음
 - 오류에 대한 처리 방식에 따라 옵셔널 캐스팅과 강제 캐스팅으로 나누어짐

업캐스팅은 자식 클래스를 부모 클래스 타입으로 변환하는 만큼 실패할 가능성이 없는 안전한 캐스팅 (오류 발생 없음)
다운 캐스팅은 상위 클래스 타입의 객체를 하위 클래스 타입으로 캐스팅하는 것을 의미.
부모 클래스 -> 자식 클래스 오류발생이 잠재적으로 가능.

다운 캐스팅 과정에서 오류가 발생하면 nil이 반환.

as
- 타입 캐스팅을 위한 연산자
- 업캐스팅을 위해서는 as만 사용
- 다운 캐스팅에서는 as? as! 사용

as? // 옵셔널 타입 결과
as! // 일반 타입 결과. 캐스팅 실패시 런타임 에러