[swift] 타입 캐스팅을 이용한 클래스 상속 검사

프로그래밍을 할 때, 클래스의 상속 관계를 검사해야 하는 경우가 있습니다. Swift에서는 타입 캐스팅을 사용하여 이를 확인할 수 있습니다.

타입 캐스팅

타입 캐스팅은 인스턴스의 타입을 확인하거나 다른 클래스 타입으로 캐스팅하는데 사용됩니다. 이를 통해 상속 관계를 확인할 수 있습니다.

타입 캐스팅은 isas? 또는 as!를 사용하여 인스턴스의 타입을 검사하거나 캐스팅할 수 있습니다.

is 연산자

is 연산자를 사용하여 인스턴스가 해당 클래스의 인스턴스인지 확인할 수 있습니다.

if someInstance is SomeClass {
    // 해당 클래스의 인스턴스입니다.
}

as? 나 as! 연산자

as?as! 연산자를 사용하여 인스턴스를 다른 클래스 타입으로 캐스팅할 수 있습니다.

let someInstance = SomeClass()
if let myInstance = someInstance as? AnotherClass {
    // 캐스팅에 성공했습니다
} else {
    // 캐스팅에 실패했습니다
}

위의 예시에서 as? 연산자는 캐스팅에 실패할 경우 nil을 반환하고, as! 연산자는 강제로 캐스팅을 시도하며 캐스팅에 실패할 경우 런타임 오류가 발생합니다.

클래스 상속 관계 검사

이러한 타입 캐스팅을 통해 클래스의 상속 관계를 검사할 수 있습니다. 다음은 이를 통해 상속 관계를 확인하는 예시입니다.

class Animal {
    var name: String = ""
}

class Dog: Animal {
    var breed: String = ""
}

class Cat: Animal {
    var color: String = ""
}

let myDog = Dog()
myDog.name = "Buddy"
myDog.breed = "Golden Retriever"

if myDog is Animal {
    print("myDog는 Animal 클래스를 상속받았습니다.")
} else {
    print("myDog는 Animal 클래스를 상속받지 않았습니다.")
}

위의 예시에서 myDogAnimal 클래스를 상속받은 Dog 클래스의 인스턴스이므로 true가 출력됩니다.

이처럼 타입 캐스팅을 통해 클래스의 상속 관계를 검사할 수 있습니다.

참고: The Swift Programming Language - Type Casting