[swift] 타입 캐스팅 모식도

Swift에서는 타입 캐스팅을 사용하여 인스턴스의 타입을 확인하거나 해당 인스턴스를 부모 클래스나 자식 클래스의 타입으로 캐스팅할 수 있습니다. 이를 통해 코드 내에서 안전하게 타입을 변환하고 인스턴스의 타입을 확인할 수 있습니다. 이 글에서는 Swift의 타입 캐스팅을 이해하기 쉽도록 모식도를 통해 설명하겠습니다.

1. 업 캐스팅 (Upcasting)

Upcasting

업 캐스팅은 부모 클래스의 타입으로 자식 클래스의 인스턴스를 캐스팅하는 것을 말합니다. 이를 통해 부모 클래스로 자식 클래스의 인스턴스를 다룰 수 있습니다. 예를 들어, Animal이라는 부모 클래스와 그의 하위 클래스로 Dog와 Cat이 있다고 가정해봅시다. Dog와 Cat은 Animal의 하위 클래스이므로, 다음과 같이 업 캐스팅할 수 있습니다.

let animal: Animal = Dog()
let anotherAnimal: Animal = Cat()

2. 다운 캐스팅 (Downcasting)

Downcasting

다운 캐스팅은 자식 클래스의 타입으로 캐스팅하는 것을 말합니다. 하지만, 다운 캐스팅은 업 캐스팅과 달리 반드시 성공하는 것이 보장되지 않으므로, as?as! 를 사용하여 옵셔널 타입으로 다운 캐스팅하거나 강제로 다운 캐스팅할 수 있습니다.

if let dog = animal as? Dog {
    dog.bark()
}

let cat = anotherAnimal as! Cat
cat.meow()

다운 캐스팅을 할 때는 부모 클래스의 인스턴스가 실제로 해당 자식 클래스의 인스턴스인지를 확인해야 합니다. 위 코드에서도 animal이 Dog 클래스의 인스턴스인지를 확인한 뒤, 그에 맞는 동작을 수행하고 있습니다.

Swift의 타입 캐스팅을 사용하면 좀 더 유연하고 안전하게 객체를 다룰 수 있습니다. 위의 모식도를 통해 타입 캐스팅이 어떻게 이루어지는지 이해하는 데 도움이 되었기를 바랍니다.

References