[swift] 다운캐스팅을 활용한 상태 변경

다운캐스팅은 상위 클래스의 인스턴스를 하위 클래스의 인스턴스로 변환하는 과정을 말합니다. Swift에서는 다운캐스팅을 활용하여 인스턴스의 상태를 변경할 수 있습니다. 예를 들어, 상위 클래스가 Vehicle이고 하위 클래스가 Car인 경우 Vehicle 인스턴스를 Car 인스턴스로 다운캐스팅하여 자동차 특有의 속성과 기능을 활용할 수 있습니다.

다운캐스팅을 위해서는 as? 또는 as! 키워드를 사용합니다. as?는 조건부 다운캐스팅으로, 변환에 실패할 경우 nil을 반환합니다. as!는 강제 다운캐스팅으로, 변환에 실패할 경우 런타임 오류가 발생합니다.

class Vehicle {
    var currentSpeed = 0
    func accelerate() {
        // 가속 로직
    }
}

class Car: Vehicle {
    var gear = 1
    func changeGear() {
        // 기어 변속 로직
    }
}

let vehicle = Car()
if let car = vehicle as? Car {
    car.changeGear()
} else {
    print("다운캐스팅 실패")
}

위 예제에서 vehicle 인스턴스를 Car 타입으로 다운캐스팅하여 changeGear() 메서드를 호출하고 있습니다.

다운캐스팅을 통해 객체의 타입을 변경함으로써, 해당 객체에 대해 특정한 동작을 수행하거나 속성을 활용할 수 있습니다.

다운캐스팅은 주로 상속 관계에 있는 클래스 간의 타입 변환 시 활용되며, 조심스럽게 사용하여 불필요한 런타임 오류를 방지해야 합니다.

더 자세한 내용은 Swift 공식 문서를 참고하시기 바랍니다.