[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 공식 문서를 참고하시기 바랍니다.