[swift] 타입 캐스팅을 이용한 클래스 상속 검사
프로그래밍을 할 때, 클래스의 상속 관계를 검사해야 하는 경우가 있습니다. Swift에서는 타입 캐스팅을 사용하여 이를 확인할 수 있습니다.
타입 캐스팅
타입 캐스팅은 인스턴스의 타입을 확인하거나 다른 클래스 타입으로 캐스팅하는데 사용됩니다. 이를 통해 상속 관계를 확인할 수 있습니다.
타입 캐스팅은 is
와 as?
또는 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 클래스를 상속받지 않았습니다.")
}
위의 예시에서 myDog
는 Animal
클래스를 상속받은 Dog
클래스의 인스턴스이므로 true
가 출력됩니다.
이처럼 타입 캐스팅을 통해 클래스의 상속 관계를 검사할 수 있습니다.
참고: The Swift Programming Language - Type Casting