[swift] 다운캐스팅(Downcasting)
class Animal {
    func makeSound() {
        print("Some generic sound")
    }
}

class Dog: Animal {
    func bark() {
        print("Woof woof!")
    }
}

let myAnimal: Animal = Dog()
if let myDog = myAnimal as? Dog {
    myDog.bark()
} else {
    print("다운캐스팅에 실패했습니다.")
}

위의 예시에서 myAnimalAnimal 클래스 타입으로 선언되었지만, 실제로는 Dog 클래스의 객체를 가지고 있습니다. 그 후, as? 키워드를 사용하여 myAnimalDog 클래스로 다운캐스팅하고 있습니다. 만약 안전하게 다운캐스팅 되지 않을 경우, 옵셔널 바인딩을 통해 다운캐스팅이 실패했음을 처리할 수 있습니다.

다운캐스팅은 안전한 객체 타입 변환을 위해 필요한 도구로 사용되며, 코드의 안정성과 유연성을 높이는 데에 도움이 됩니다.

참고 자료