[swift] 타입 캐스팅
타입 캐스팅은 Swift에서 인스턴스의 타입을 확인하거나 해당 인스턴스를 부모 클래스나 자식 클래스의 타입으로 다루는 것을 말합니다.
1. 업 캐스팅(Upcasting)
업 캐스팅은 하위 클래스의 인스턴스를 상위 클래스 타입으로 변환하는 것을 의미합니다. 이를 통해 부모 클래스의 메소드와 프로퍼티에 접근할 수 있게 됩니다.
class Animal {
func makeSound() {
print("Some generic sound")
}
}
class Dog: Animal {
func bark() {
print("Woof!")
}
}
let myDog = Dog()
let myAnimal: Animal = myDog // Upcasting
myAnimal.makeSound() // "Some generic sound"
2. 다운 캐스팅(Downcasting)
다운 캐스팅은 상위 클래스 타입의 인스턴스를 하위 클래스 타입으로 변환하는 것을 말합니다. 이때 옵셔널 다운 캐스팅 연산자(as?
)나 강제 다운 캐스팅 연산자(as!
)를 사용할 수 있습니다.
let myAnimal = Animal()
if let myDog = myAnimal as? Dog { // Downcasting with 'as?'
myDog.bark()
} else {
print("This animal is not a dog")
}
3. 타입 확인 및 변환
is
연산자를 사용하여 인스턴스의 타입을 확인할 수 있습니다. 또한, as
연산자를 이용하여 타입을 변환할 수도 있습니다.
let someAnimal: Animal = Dog()
if someAnimal is Dog { // Type check
let someDog = someAnimal as! Dog // Forced downcast
print("It's a dog!")
someDog.bark()
}
결론
타입 캐스팅은 Swift에서 인스턴스의 동적인 타입 변환을 허용하여 유연한 프로그래밍을 가능하게 합니다. 그러나 안전한 캐스팅을 위해 옵셔널 다운 캐스팅을 유용하게 활용해야 합니다.