Philographer

타입 캐스팅

2016. 5. 28. 18:41 - 티메르

타입 캐스팅

타입 캐스팅(다운, 업 캐스팅)

  • 상위 클래스로 갈 수록 구체화, 하위 클래스로 갈 수록 추상화
  • 상속 관계: 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! 변환할 타입(일반 타입으로 변환)
    

'IOS > Swift' 카테고리의 다른 글

생성자  (0) 2016.05.28
Any, AnyObject  (0) 2016.05.28
상속, 오버라이딩  (0) 2016.05.28
메소드  (0) 2016.05.28
프로퍼티  (0) 2016.05.28
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다