타입 캐스팅
타입 캐스팅(다운, 업 캐스팅)
- 상위 클래스로 갈 수록 구체화, 하위 클래스로 갈 수록 추상화
상속 관계: Vehicle -> Car -> SUV var list[Vehicle]() //모두 가능하다, 확장성이 좋다 list.append(Vehicle()) list.append(Car()) list.append(Suv())
타입 비교 연산
인스턴스 is 비교대상 타입 SUV() is SUV //true(일치함) SUV() is Vehicle //true(일치함) Car() is SUV //true(일치함) Car() is SUV //false(일치하지 않음) //할당받을 수 있는 타입이면 true, 아니면 false
타입 캐스팅 연산
- as 키워드 사용
let someCar : Vehicle = SUV() //이게 하고싶으면? 다운 캐스팅!
업 캐스팅
- 하위 클래스 타입을 상위 클래스 타입으로 캐스팅할 때(캐스팅하기 전 타입이 하위 클래스, 캐스팅 한 후 타입이 상위 클래스)
- 캐스팅한 결과, 캐스팅하기 전 타입보다 추상화될 때
- 일반적으로 캐스팅 과정에서 오류가 발생할 가능성이 없음
객체 as 변환할 타입
다운 캐스팅
- 상위 클래스 타입을 하위 클래스 타입으로 캐스팅할 때(캐스팅하기 전 타입이 상위 클래스, 캐스팅 한 후 타입이 하위 클래스)
- 캐스팅한 결과, 캐스팅하기 전 타입보다 구체화될 때
- 캐스팅 과정에서 오류가 발생할 가능성이 있음
- 오류에 대한 처리 방식에 따라 옵셔널 캐스팅과 강제 캐스팅으로 나누어짐
객체 as? 변환할 타입(옵셔널 타입으로 변환) 객체 as! 변환할 타입(일반 타입으로 변환)
댓글 로드 중…
트랙백을 확인할 수 있습니다
URL을 배껴둬서 트랙백을 보낼 수 있습니다