[swift] 부모 클래스에서 자식 클래스로의 묵시적 형변환

Swift에서는 부모 클래스 인스턴스를 자식 클래스로 묵시적으로 형변환하는 기능을 제공합니다. 이를 통해 개발자는 부모 클래스의 인스턴스를 자식 클래스로 쉽게 변환할 수 있으며 추가적인 기능을 사용할 수 있습니다.

형변환 예제

class Animal {
    func makeSound() {
        print("Some sound")
    }
}

class Dog: Animal {
    let name: String
    
    init(name: String) {
        self.name = name
    }
    
    override func makeSound() {
        print("Woof!")
    }
}

let animal: Animal = Dog(name: "Buddy")
animal.makeSound() // 출력: "Woof!"
let dog = animal as? Dog
print(dog?.name) // 출력: "Buddy"

위 예제에서 Animal 클래스의 인스턴스를 생성한 후, 이를 Dog 클래스의 인스턴스로 묵시적으로 형변환하여 name 속성에 접근할 수 있습니다.

묵시적 형변환이 실패할 경우, 옵셔널 값으로 반환되므로 as? 연산자를 사용하여 안전하게 형변환 결과를 처리할 수 있습니다.

이러한 묵시적 형변환을 사용하면 손쉽게 부모 클래스의 기능을 보다 구체화된 자식 클래스에서 사용할 수 있습니다.

요약

Swift에서는 부모 클래스의 인스턴스를 자식 클래스로 묵시적으로 형변환하는 기능을 제공하여 코드를 보다 유연하게 작성할 수 있습니다. 묵시적 형변환을 활용하여 클래스 간의 계층 구조를 유지하면서 다형성(polymorphism)을 구현할 수 있습니다.

Swift 공식 문서 - Type Casting