ios 개발 - 내배캠

[11/6 iOSDev] Type Casting

seoleader 2024. 11. 6. 21:09

타입캐스팅 : 인스턴스의 타입을 확인하거나 특정 타입으로 변환하는 방법. 형변환

                    class 에서 상속 관계를 이용한 타입캐스팅이 주로 사용

  • is 연산자 : 타입 체크. 타입이 특정 클래스이거나 하위클래스인 경우 true 반환, 아닌 경우 false 반환
  • as 연산자(Upcasting) : 슈퍼클래스로 변환(구체적인 타입에서 범용적인 타입). 항상 성공
  • as? 연산자(Downcasting) : 서브클래스로 변환. 성공 시 Optional 타입으로 리턴, 실패 시 nil 리턴
  • as! 연산자(Downcasting) : 서브클래스로 변환. 성공 시 Optional 타입을 강제 언래핑한 타입, 실패 시 런타임 오류

 

20번째 줄 person 은 Animal 타입이지만 Person 으로 인스턴스를 생성함

-> job 프로퍼티를 가지고 있기 때문에 다운캐스팅 성공

-> 만약 21번째 줄에 바로 'print(person.job)' 을 작성하면 에러. 타입은 Animal 타입이기 때문

 

24번째 줄 animal 은 Animal 타입이고 인스턴스도 Animal 로 생성됨

-> job 프로퍼티가 없기 때문에 다운캐스팅 실패